Dans un grand dataframe ("myfile") avec quatre colonnes, je dois ajouter une cinquième colonne avec des valeurs conditionnellement basées sur les quatre premières colonnes.
Préférez les réponses avec dplyr
et mutate
, principalement en raison de sa rapidité dans les grands ensembles de données.
Mon dataframe ressemble à ceci:
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
...
Les valeurs de la cinquième colonne (V5) sont basées sur certaines règles conditionnelles:
if (V1==1 & V2!=4) {
V5 <- 1
} else if (V2==4 & V3!=1) {
V5 <- 2
} else {
V5 <- 0
}
Maintenant, je veux utiliser la mutate
fonction pour utiliser ces règles sur toutes les lignes (pour éviter les boucles lentes). Quelque chose comme ça (et oui, je sais que ça ne marche pas comme ça!):
myfile <- mutate(myfile, if (V1==1 & V2!=4){V5 = 1}
else if (V2==4 & V3!=1){V5 = 2}
else {V5 = 0})
Cela devrait être le résultat:
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
Comment faire cela dplyr
?
NA
, (NaN, +Inf, -Inf
)?