dplyr mutieren mit bedingter Werte

In einem großen dataframe ("myfile") mit vier Spalten, die ich haben, um eine fünfte Spalte mit Werten bedingt auf die ersten vier Spalten.

Lieber Antworten mit dplyr und mutate vor allem wegen seiner Geschwindigkeit in großen Datenmengen.

Mein dataframe sieht wie folgt 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 einige bedingte Regeln:

if (V1==1 & V2!=4) {
  V5 <- 1
} else if (V2==4 & V3!=1) {
  V5 <- 2
} else {
  V5 <- 0
}

Jetzt will ich mit der mutate - Funktion verwenden Sie diese Regeln auf alle Zeilen (um zu vermeiden, langsam Schleifen). So etwas (und ja, ich weiß, es funktioniert nicht auf diese Weise!):

myfile <- mutate(myfile, if (V1==1 & V2!=4){V5 = 1}
    else if (V2==4 & V3!=1){V5 = 2}
    else {V5 = 0})

Sollte dies das Ergebnis:

  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 dies in dplyr?

  • Es ist nützlich, um Staat, wenn V1..4 sind alle ganzzahligen (nicht Faktor, logical, string oder float)? und kümmern Sie sich zur korrekten Handhabung NA, (NaN, +Inf, -Inf)?
Schreibe einen Kommentar