Hilfe bei if-Schleife

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

Moderatoren: EDi, jogo

Antworten
MarcticFox

Hilfe bei if-Schleife

Beitrag 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!
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Hilfe bei if-Schleife

Beitrag 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
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Hilfe bei if-Schleife

Beitrag von bigben »

Ich empfehle folgenden Link: http://if-schleife.de

Soviel sprachliche Genauigkeit macht sich bezahlt.

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

Re: Hilfe bei if-Schleife

Beitrag 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!
Antworten