【发布时间】:2019-09-15 05:58:00
【问题描述】:
我想使用 dplyr::mutate 有条件地填充一列。新变量的一个级别应该对应于上一列中是否存在值,而另一个级别是“其他”条件。
我有一个数据框:
group piece answer agreement
group1 A noise good
group1 A silence good
group1 A silence good
group1 B silence bad
group1 B loud_noise bad
group1 B noise bad
group1 B loud_noise bad
group1 B noise bad
group2 C silence good
group2 C silence good
我想创建一个按组分组的新变量,如果 'bad' 出现在 'agreement' 中,那么值应该是 'inconsistent' 但如果 'agreement' 的所有值都是 'good',那么值应该是“一致的”。
group piece answer agreement new_agreement
group1 A noise good bad
group1 A silence good bad
group1 A silence good bad
group1 B silence bad bad
group1 B loud_noise bad bad
group1 B noise bad bad
group1 B loud_noise bad bad
group1 B noise bad bad
group2 C silence good good
group2 C silence good good
但 case_when 并没有完全做到这一点 - 它只是再次复制相同的变量:
newdf <- df %>%
group_by(group) %>%
mutate(new_agreement = case_when(agreement == 'bad' ~
"inconsistent", agreement =='good' ~ "consistent")) %>%
as.data.frame()
【问题讨论】:
-
您的新列与您的问题描述不符。你能编辑一下这个问题吗?