繁体   English   中英

根据R中特定列中的值替换所有行值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM