如何解决基于组和当前分类变量创建一个新的分类变量
我当前的 df 有变量:ID、GroupID 和 Drinker。我正在尝试创建一个新变量(GroupDrink),如果组(GroupID) 中的任何个人(ID) 为Drinker 选择yes,那么该组中的所有个人都将为新变量(GroupDrink) 选择yes。 详情请参阅下表。
ID | 组ID | 饮酒者 | GroupDrink(NewVariable) |
---|---|---|---|
1 | 25 | 是 | 是 |
2 | 25 | 没有 | 是 |
3 | 21 | 没有 | 没有 |
4 | 40 | 是 | 是 |
5 | 40 | 没有 | 是 |
6 | 40 | 没有 | 是 |
解决方法
这行得通吗:
library(dplyr)
df %>% group_by(GroupID) %>% mutate(GroupDrink = if_else(any(Drinker == 'Yes'),'Yes','No'))
# A tibble: 6 x 4
# Groups: GroupID [3]
ID GroupID Drinker GroupDrink
<dbl> <dbl> <chr> <chr>
1 1 25 Yes Yes
2 2 25 No Yes
3 3 21 No No
4 4 40 Yes Yes
5 5 40 No Yes
6 6 40 No Yes
使用的数据:
df
# A tibble: 6 x 3
ID GroupID Drinker
<dbl> <dbl> <chr>
1 1 25 Yes
2 2 25 No
3 3 21 No
4 4 40 Yes
5 5 40 No
6 6 40 No
,
detach(package:plyr)
library(dplyr)
df %>% group_by(GroupID)%>%
mutate(GroupDrink = case_when
any(Drinker == 'Yes') ~ "Yes",TRUE~ "No"
将函数应用于组似乎更适合使用 case_when 函数。 为此,必须卸载 plyr 包。我必须分离包才能将功能正确应用于组。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。