我正在寻找基于多个列中的条件向现有数据框架添加虚拟变量的帮助(最后一点是将我的问题与我已经找到的答案分开的东西)。
下面是一个简单的例子:
y <- c(1,2,5,2,3,3)
z <- c("A", "B", "B", "A", "A", "B")
df <- as.data.frame(y,z)
现在我想要有第三列,如果y等于2或z等于b,它的值为'1'。因此,除了第一个(a,1)和第五个(a,3),该列将显示所有观测值为1。
我肯定我知道做这件事的所有要素,只是我现在不能把它们放在一起。任何帮助将非常感激!dplyr
选项使用case_when
:
y <- c(1,2,5,2,3,3)
z <- c("A", "B", "B", "A", "A", "B")
df <- data.frame(y = y, z = z)
library(dplyr)
df %>%
mutate(dummy = case_when(y == 2|z == "B"~1,
TRUE ~ 0))
#> y z dummy
#> 1 1 A 0
#> 2 2 B 1
#> 3 5 B 1
#> 4 2 A 1
#> 5 3 A 0
#> 6 3 B 1
由reprex包(v2.0.1)创建于2022-07-19