Seite 1 von 1

for-if-schleife

Verfasst: Sa Aug 12, 2017 3:27 pm
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

Re: for-if-schleife

Verfasst: Sa Aug 12, 2017 4:44 pm
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

Re: for-if-schleife

Verfasst: So Aug 13, 2017 12:28 am
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