Seite 1 von 1

Hilfe bei if-Schleife

Verfasst: Mo Jul 30, 2018 2:57 pm
von MarcticFox
Hallo zusammen!
Ich habe ein Problem mit einer if-Schleife. Ich hätte gerne, dass eine Spalte "active" hinzugefügt wird und wie folgt ausgefüllt wird:
Wenn die AktionId des Datensatzes 1,2,3 oder 14 ist (die ist in jeder Zeile eine andere), dann soll in meiner neuen active-Spalte ein "i" stehen, wenn andere Zahlen (sprich 3-14) dort stehen, dann ein "a".
Dafür habe ich folgenden Befehl getippt:

dat_fin$active <- if (dat_fin$AktionId <="3" | dat_fin$AktionId =="14"){dat$fin$active <- "i"} else {dat_fin$active <- "a"}

Letztenendes steht nun aber überall ein "i", unabhängig von der Nummer der AktionId. Zusätzlich kommt folgende Warnung:
"the condition has length > 1 and only the first element will be used"

Verstehe ich es richtig, dass sich R nur die AktionId der ersten Zeile anguckt und daraufhin einfach die gesamte active-Spalte füllt?
Falls ja, wie kann ich sagen, dass R sich um jede Zeile einzeln kümmern soll? (Es sind über 7.000 Zeilen...)

Liebe Grüße!

Re: Hilfe bei if-Schleife

Verfasst: Mo Jul 30, 2018 3:32 pm
von jogo
Hallo MpolarFuchs,

Code: Alles auswählen

dat_fin$active <- ifelse(dat_fin$AktionId %in% 4:13, "a", "i")
denke immer daran: if (...) ... kann keinen Vektor bei der Bedingung verarbeiten; ifelse(...) kann das.
Und zukünftig beachten: viewtopic.php?f=20&t=29

Gruß, Jörg

Re: Hilfe bei if-Schleife

Verfasst: Mo Jul 30, 2018 4:25 pm
von bigben
Ich empfehle folgenden Link: http://if-schleife.de

Soviel sprachliche Genauigkeit macht sich bezahlt.

LG,
Bernhard

Re: Hilfe bei if-Schleife

Verfasst: Mo Jul 30, 2018 7:58 pm
von MarcticFox
jogo hat geschrieben: Mo Jul 30, 2018 3:32 pm Hallo MpolarFuchs,

Code: Alles auswählen

dat_fin$active <- ifelse(dat_fin$AktionId %in% 4:13, "a", "i")
denke immer daran: if (...) ... kann keinen Vektor bei der Bedingung verarbeiten; ifelse(...) kann das.
Und zukünftig beachten: viewtopic.php?f=20&t=29

Gruß, Jörg
Ahh ok, die ifelse Funktion war mir nicht präsent. Super, dankeschön!
Das mit dem Code wende ich dann nächstes Mal an.
Schönen Abend noch!