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

Replace all row values according to a value in a specific column in R

假设我们有一个如下所示的数据集:

var c1 c2 c3
a TRUE TRUE TRUE
b FALSE TRUE TRUE
c TRUE TRUE TRUE
d FALSE TRUE TRUE

我想根据 c1 列的 FALSE 值将所有行值(不是 var 列)替换为 NA。

理想情况下我想看起来像这样:

var c1 c2 c3
a TRUE TRUE TRUE
b FALSE NA NA
c TRUE TRUE TRUE
d FALSE NA NA

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' 列,并使用 [=23= 中的逻辑列] 到 return 列的值,默认情况下,最后一个条件即 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