根据组和当前分类变量创建新的分类变量
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 包。我必须分离功能包才能正确应用于组。
我正在尝试创建一个基于组和当前变量的分类变量。
我当前的 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 包。我必须分离功能包才能正确应用于组。