首页 > 解决方案 > 根据组和当前分类变量创建新的分类变量

问题描述

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

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

ID 组ID 饮酒者 GroupDrink(新变量)
1 25 是的 是的
2 25 是的
3 21
4 40 是的 是的
5 40 是的
6 40 是的

标签: rgroup-bygroupingcategorical-data

解决方案


这是否有效:

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     

推荐阅读