假设我们有一个如下所示的数据集:
我想根据 c1 列的 FALSE 值用 NA 替换所有行值(右侧不是 var 列)。
理想情况下我希望看起来像这样:
var = c("a","b","c","d")
c1 = c(TRUE,FALSE,TRUE,FALSE)
c2 = c(TRUE,TRUE,TRUE,TRUE)
c3 = c(TRUE,TRUE,TRUE,TRUE)
data= tibble(var,c1,c2,c3);data
如何使用 dplyr 包在 R 中执行此操作? 有什么帮助吗?
最佳答案
我们可以在 dplyr
中使用 across
- 循环 across
'c2'、'c3' 列,并使用 ' 中的逻辑列c1' 返回列的值,默认情况下最后一个条件即 TRUE
将全部为 NA
library(dplyr)
data <- data %>%
mutate(across(c2:c3, ~ case_when(c1 ~ .x)))
-输出
data
# A tibble: 4 × 4
var c1 c2 c3
<chr> <lgl> <lgl> <lgl>
1 a TRUE TRUE TRUE
2 b FALSE NA NA
3 c TRUE TRUE TRUE
4 d FALSE NA NA
关于根据 R 中特定列中的值替换所有行值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72481167/