У великому фреймі даних ("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
)?