我有这样的数据:
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/