r 根据变量组合创建一个新的指标列

问题描述 投票:0回答:1

我有一个包含两列的数据集,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
,但它变得太复杂并放弃了。非常感谢任何帮助。谢谢。

r data-manipulation data-transform
1个回答
0
投票

您可以使用

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
© www.soinside.com 2019 - 2024. All rights reserved.