In un dataframe di grandi dimensioni ("myfile") con quattro colonne devo aggiungere una quinta colonna con valori basati condizionatamente sulle prime quattro colonne.
Preferisci risposte con dplyr
e mutate
, principalmente a causa della sua velocità in set di dati di grandi dimensioni.
Il mio dataframe ha questo aspetto:
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
...
I valori della quinta colonna (V5) si basano su alcune regole condizionali:
if (V1==1 & V2!=4) {
V5 <- 1
} else if (V2==4 & V3!=1) {
V5 <- 2
} else {
V5 <- 0
}
Ora voglio utilizzare la mutate
funzione per utilizzare queste regole su tutte le righe (per evitare cicli lenti). Qualcosa del genere (e sì, lo so che non funziona in questo modo!):
myfile <- mutate(myfile, if (V1==1 & V2!=4){V5 = 1}
else if (V2==4 & V3!=1){V5 = 2}
else {V5 = 0})
Questo dovrebbe essere il risultato:
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
Come farlo in dplyr
?
NA
, (NaN, +Inf, -Inf
)?