微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

基于组和当前分类变量创建一个新的分类变量

如何解决基于组和当前分类变量创建一个新的分类变量

我正在尝试创建一个基于组和当前变量的分类变量

我当前的 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 举报,一经查实,本站将立刻删除。