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

标签 r dataframe dplyr

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

<表类=“s-表”> <标题> 变量 c1 c2 c3 <正文> 一个 正确 正确 正确 b 错误 正确 正确 c 正确 正确 正确 d 错误 正确 正确

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

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

<表类=“s-表”> <标题> 变量 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 中执行此操作? 有什么帮助吗?

最佳答案

我们可以在 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/

相关文章:

r - 在数据框中添加名称为最大列的新列

r - 从 R 中的列表列名称获取值表

r - 在美国 map 上绘制数值

r - 根据任何选定列中的值对 data.table 进行子集化的有效方法

r - R 中的累积百分比

r - 将数据框中的行分配给 3 组?

python - 根据列值重复 pandas DataFrame 中的行

r - 从列表列表制作数据框,但每个元素都是一列

r - 用于循环列表的自定义函数

r - 如何使用 bquote() 在 scale_x_discrete() 内的 ggplot2 中动态创建标签?