根据组和当前分类变量创建新的分类变量

Creating a new categorical variable based on groups and current categorical variable

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

我当前的 df 有以下变量:ID、GroupID 和 Drinker。我正在尝试创建一个新变量 (GroupDrink),如果组 (GroupID) 中的任何个人 (ID) 为 Drinker 选择是,那么该组中的所有个人都将对新变量 (GroupDrink) 选择是。 请参阅下面的 table 了解更多详情。

ID 群组ID 饮酒者 GroupDrink(新变量)
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 包。我必须分离功能包才能正确应用于组。