In einem großen Datenrahmen ("myfile") mit vier Spalten muss ich eine fünfte Spalte mit Werten hinzufügen, die bedingt auf den ersten vier Spalten basieren.
Bevorzugen Sie Antworten mit dplyr
und mutate
, hauptsächlich wegen der Geschwindigkeit in großen Datenmengen.
Mein Datenrahmen sieht folgendermaßen aus:
V1 V2 V3 V4
1 1 2 3 5
2 2 4 4 1
3 1 4 1 1
4 4 5 1 3
5 5 5 5 4
...
Die Werte der fünften Spalte (V5) basieren auf einigen bedingten Regeln:
if (V1==1 & V2!=4) {
V5 <- 1
} else if (V2==4 & V3!=1) {
V5 <- 2
} else {
V5 <- 0
}
Jetzt möchte ich die mutate
Funktion verwenden, um diese Regeln für alle Zeilen zu verwenden (um langsame Schleifen zu vermeiden). So etwas (und ja, ich weiß, dass es so nicht funktioniert!):
myfile <- mutate(myfile, if (V1==1 & V2!=4){V5 = 1}
else if (V2==4 & V3!=1){V5 = 2}
else {V5 = 0})
Dies sollte das Ergebnis sein:
V1 V2 V3 V4 V5
1 1 2 3 5 1
2 2 4 4 1 2
3 1 4 1 1 0
4 4 5 1 3 0
5 5 5 5 4 0
Wie geht das dplyr
?
NA
, (NaN, +Inf, -Inf
)?