我有一个包含两列的数据集,ID,组。
ID Group
10 Red
11 Red
13 Blue
13 Red
15 Blue
15 Blue
17 Blue
17 Red
17 Red
19 Blue
19 Undecided
23 Blue
23 Undecided
23 Undecided
我的目标是创建第三个指示器列,该列根据 ID 和 Group 中的值的组合获取值。期待第三栏,像这样
Indicator
。
ID Group Indicator
10 Blue Single
11 Blue Single
13 Blue Blue-Red
13 Red Blue-Red
15 Blue Blue-Blue
15 Blue Blue-Blue
17 Blue Blue-Red
17 Red Blue-Red
17 Red Blue-Red
19 Blue Blue-Undecided
19 Undecided Blue-Undecided
23 Blue Blue-Undecided
23 Undecided Blue-Undecided
23 Undecided Blue-Undecided
我尝试了
case_when
,但它变得太复杂并放弃了。非常感谢任何帮助。谢谢。
您可以使用
ave
transform(
df,
Indicator = ave(
Group,
ID,
FUN = \(x) ifelse(length(unique(x)) == 1,
"Single", paste0(unique(x), collapse = "-")
)
)
)
这给出了
ID Group Indicator
1 10 Red Single
2 11 Red Single
3 13 Blue Blue-Red
4 13 Red Blue-Red
5 15 Blue Single
6 15 Blue Single
7 17 Blue Blue-Red
8 17 Red Blue-Red
9 17 Red Blue-Red
10 19 Blue Blue-Undecided
11 19 Undecided Blue-Undecided
12 23 Blue Blue-Undecided
13 23 Undecided Blue-Undecided
14 23 Undecided Blue-Undecided