В большом фрейме данных («myfile») с четырьмя столбцами мне нужно добавить пятый столбец со значениями, условно основанными на первых четырех столбцах.
Предпочитайте ответы с dplyr
и mutate
, главным образом из-за его скорости в больших наборах данных.
Мой фрейм данных выглядит так:
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
...
Значения пятого столбца (V5) основаны на некоторых условных правилах:
if (V1==1 & V2!=4) {
V5 <- 1
} else if (V2==4 & V3!=1) {
V5 <- 2
} else {
V5 <- 0
}
Теперь я хочу использовать эту mutate
функцию для использования этих правил во всех строках (чтобы избежать медленных циклов). Примерно так (и да, я знаю, что так не работает!):
myfile <- mutate(myfile, if (V1==1 & V2!=4){V5 = 1}
else if (V2==4 & V3!=1){V5 = 2}
else {V5 = 0})
Должен быть результат:
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
Как это сделать dplyr
?
NA
, (NaN, +Inf, -Inf
)?