for-if-schleife

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
jessi
Beiträge: 100
Registriert: Mo Jul 10, 2017 9:23 am

for-if-schleife

Beitrag von jessi »

Schönen Nachmittag,

ich benötige eine if-Bedingung, die mir Datum und Uhrzeit ausgegeben, wenn ein bestimmter Wert überschritten wird. Ich habe eine 288x10 data frame, dass sich u. a. aus Datum (chr), Uhrzeit (chr) und Windspitze zusammensetzt. Es liegen alle 5 Minuten Werte vor, ein Tag setzt sich somit aus 288 Werten zusammen. Zusätzlich zu den Winddaten und der Zeitangabe habe ich auch Ortzuweisungen in Form von phi und lam. Damit die Abfrage jetzt nicht allzulange dauert, habe ich den Ort, für die Bedingung eingegrenzt.

Code: Alles auswählen

gebiet_obs = subset(data, data$phi==48 & data$lam == 16)

dim(x)
[1] 288  10

#Abfrage
for (i in 1:length(gebiet_obs[,1]))
 { if (gebiet_obs$boen > 90){print(gebiet$obs$Datum)}
{ if (gebiet_obs$boen > 90){print(gebiet$obs$Uhrzeit)}}}

Es gab 50 oder mehr Warnungen (Anzeige der ersten 50 mit warnings())
1: In if (gebiet_obs$boen > 90) { ... :
  Bedingung hat Länge > 1 und nur das erste Element wird benutzt

Kann mir einer erklären, was ich bei dieser Abfrage falsch mache? Hängt es mit der for-Schleife zusammen, den Index i habe ich ja eigentlich nie verwendet, wenn ich die for-schleife weglasse, kommt die gleiche Fehlermeldung, nur einmal.

Danke!
Gruß. J
jessi
Beiträge: 100
Registriert: Mo Jul 10, 2017 9:23 am

Re: for-if-schleife

Beitrag von jessi »

Hallo nochmals,

es muss natürlich heißen

Code: Alles auswählen

for (i in gebiet_obs$boen) {if (i > 90){print(gebiet_obs$Datum)}}
Grüße,
J
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: for-if-schleife

Beitrag von bigben »

Hallo,

probier mal folgendes:

Code: Alles auswählen

relevante <- which(gebiet_obs$boen > 90)
print(gebiet_obs$Datum[relevante,])
Bitte gib bei solchen Fragen immer auch die Ausgabe von

Code: Alles auswählen

str(gebiet_obs)
an und wenn möglich gib uns ein paar Beispieldaten, mit denen wir experimentieren können. Die Ausgabe von

Code: Alles auswählen

dput(head(gebiet_obs, 100))
wäre zum Beispiel tauglich.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Antworten