[英]Replace all row values according to a value in a specific column in R
假设我们有一个如下所示的数据集:
变量 | c1 | c2 | c3 |
---|---|---|---|
一个 | 真的 | 真的 | 真的 |
b | 错误的 | 真的 | 真的 |
C | 真的 | 真的 | 真的 |
d | 错误的 | 真的 | 真的 |
我想根据列 c1 的 FALSE 值用 NA 替换所有行值(不是 var 列)。
理想情况下,我希望看起来像这样:
变量 | c1 | c2 | c3 |
---|---|---|---|
一个 | 真的 | 真的 | 真的 |
b | 错误的 | 不适用 | 不适用 |
C | 真的 | 真的 | 真的 |
d | 错误的 | 不适用 | 不适用 |
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 中执行此操作? 有什么帮助吗?
我们可以across
dplyr
across
使用 cross - 遍历 '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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.