Zuweisung von if-Abfragen

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

Zuweisung von if-Abfragen

Beitrag von jessi »

Hallo liebe Forum-Mitglieder,

ich habe zwei data.frames, die ich unter bestimmten Voraussetzungen vergleichen und ergänzen möchte.

Code: Alles auswählen

str(bdv)
'data.frame':   37 obs. of  4 variables:
 $ class                     : int  1 4 9 4 2 1 6 5 9 3 ...
 $ height                     : int  2 1 5 5 5 5 5 5 4 5 ...
 $ T                          : int  0 0 0 1 1 1 1 1 1 1 ...
In bdv sind Informationen über Klasse und Höhe und die entsprechende Temperaturstufe enthalten.

Code: Alles auswählen

 
str(class_height)
'data.frame':   204583 obs. of  7 variables:
 $ class_val          : int  200 200 200 200 200 14 14 200 200 200 ...
 $ class               : num  1 1 1 1 1 1 1 1 1 1 ...
 $ height   : Factor w/ 4 levels "1000 bis 1100 m",..: 4 4 4 4 4 4 4 4 4 4 
In class_height sind mitunter class und height enthalten. Jetzt möchte ich in der Variable class_height die neue Variable der Temperaturstufe erstellen. Probiert habe ich das mit einer for-Schleife bzw. if-Bedingung

Code: Alles auswählen

for (i in 1:length(class_heigt)){ if (class_height$class[i] == 1 && class_height$height == 2) {class_height$Tverteilung[i] == 0}}
Jetzt bekomme ich zwar keine Fehlermeldung, am ursprünglichen Data.frame hat sich aber auch nichts geändert. Kann mir jemand sagen, wo genau ich den Denkfehler habe?

Und gibt es vielleicht auch eine Möglichkeit, die entsprechenden Bedingungen direkt aus bdv zu erhalten, ohne dass ich for-Schleifen und if-Bedingungen extra anlegen muss?

Danke für eure Unterstützung.
Grüße
Jessi
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Zuweisung von if-Abfragen

Beitrag von bigben »

Code: Alles auswählen

for (i in 1:length(class_heigt)){ 
Da fehlt ein h in height. Das sollte eigentlich eine Fehlermeldung hervorbringen. Gab es Fehlermeldungen? Dann berichte diese bitte. Gab es keine? Dann hast Du vielleicht irgendwann mal eine Variable class_heigt erstellt, die Du dann löschen solltest.

Code: Alles auswählen

class_height$class[i] == 1 && class_height$height == 2
Hier fehlt mal mindestens ein '[ i]' auf der rechten Seite des '&&', also kann der Vergleich nie TRUE werden, weil class_height$height == 2 nie TRUE wird.

Code: Alles auswählen

class_height$Tverteilung[i] == 0}
Und für alle anderen i? Wird tVerteilung da auch auf irgendeinen Wert gesetzt? Das wäre wichtig, sonst passiert sowas hier:

Code: Alles auswählen

> bsp <- data.frame(a=1:5)
> bsp$b[1] <- 1
> bsp
  a b
1 1 1
2 2 1
3 3 1
4 4 1
5 5 1
Bitte poste für weitere Fragen auch ein reproduzierbares Minimalbeispiel, in Deinem Fall also Code, der zwei Dataframes mit Daten zum Ausprobieren enthält.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
jessi
Beiträge: 100
Registriert: Mo Jul 10, 2017 9:23 am

Re: Zuweisung von if-Abfragen

Beitrag von jessi »

Hallo.

Danke für deinen Input. Ich hab es jetzt etwas anders ohne die for schleife probiert und so funktioniert es ;)

Grüße
Jessi
Antworten