r - 如何使用 dplyr 按组有条件地更改列中的值?

标签 r dplyr

我有这样的数据:

g1 g2 var 
 1  a Yes 
 1  a No 
 1  a No 
 1  b Yes 
 1  b Yes 
 1  b Yes 
 2  a No 
 2  a No 
 2  a No

如果在每个 g1&g2 组中,var 中至少有一个 Yes,我想将 var 中的所有值更改为 Yes。我尝试使用 group_by 和 mutate、replace、ifelse 的组合,但没有成功。任何帮助表示赞赏。

最佳答案

你也可以这样做:

df %>%
 group_by(g1, g2) %>%
 mutate(var = ifelse(any(var == "Yes"), "Yes", "No"))

     g1 g2    var  
  <int> <chr> <chr>
1     1 a     Yes  
2     1 a     Yes  
3     1 a     Yes  
4     1 b     Yes  
5     1 b     Yes  
6     1 b     Yes  
7     2 a     No   
8     2 a     No   
9     2 a     No   

这里,如果“var”中的任何值(每个“g1”和“g2”)等于 Yes ,它返回 Yes , 否则 No .

关于r - 如何使用 dplyr 按组有条件地更改列中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55800323/

相关文章:

r - 如何使用 R 的 RecordLinkage 包获得匹配对

r - Quantmod错误 'cannot open URL'

r - dplyr-使用变量名在多个列上分组

r - dplyr:group_by 和 group_by_ 函数有什么区别?

r - glmnet:提取标准化系数

r - 根据列名称的共性进行变异

r - 如何选择以另一列的值为条件的列? (dplyr)

R中的滚动条件计数

r - case_when 与部分字符串匹配和 contains()

R:如何跨行应用xts对象?