En un marco de datos grande ("myfile") con cuatro columnas, tengo que agregar una quinta columna con valores condicionalmente basados en las primeras cuatro columnas.
Prefiere respuestas con dplyr
y mutate
, principalmente debido a su velocidad en grandes conjuntos de datos.
Mi marco de datos se ve así:
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
...
Los valores de la quinta columna (V5) se basan en algunas reglas condicionales:
if (V1==1 & V2!=4) {
V5 <- 1
} else if (V2==4 & V3!=1) {
V5 <- 2
} else {
V5 <- 0
}
Ahora quiero usar la mutate
función para usar estas reglas en todas las filas (para evitar bucles lentos). Algo como esto (y sí, ¡sé que no funciona de esta manera!):
myfile <- mutate(myfile, if (V1==1 & V2!=4){V5 = 1}
else if (V2==4 & V3!=1){V5 = 2}
else {V5 = 0})
Este debería ser el resultado:
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
¿Cómo hacer esto dplyr
?
NA
, (NaN, +Inf, -Inf
)?