【发布时间】:2019-08-14 23:49:56
【问题描述】:
我不确定提出这个问题的最佳方式。
我想使用 case_when(或 if_else,如果效果更好)来检查某个值是否存在于任何列范围内。
例如在 mtcars 中,我想检查任何列 vs、am、gear 或 carb 是否包含 1 或 2,如果有,则将新变量 newVar 设置为 1。我可以做到以下几点:
mtcars %>%
mutate(newVar = case_when(vs %in% c(1, 2) | am %in% c(1, 2) | gear %in% c(1, 2) | carb %in% c(1, 2) ~ 1,
TRUE ~ 0))
有没有更漂亮的方法来做到这一点?我想检查超过 10 列,所以它会变长。比如:
mtcars %>%
mutate(newVar = case_when(c(vs, am, gear, carb) %in% c(1, 2) ~ 1,
TRUE ~ 0))
【问题讨论】: