首页 > 解决方案 > 使用 R 在每个组内创建变量组合子组

问题描述

我有以下方式的数据框:

dat <- data.frame(v1=c("A", "A", "B", "B", "C", "C", "C","C"), v2=c("G1","G1","G1","G2","G1","G3","G3","G4"))

我需要创建一个新变量来指示每个组(v1)中的所有子组(v2),以便最后我的数据将采用以下方式:

  v1 v2 which_subgroups
1  A G1 "G1"
2  A G1 "G1"
3  B G1 "G1, G2"
4  B G2 "G1, G2"
5  C G1 "G1, G3, G4"
6  C G3 "G1, G3, G4"
7  C G3 "G1, G3, G4"
8  C G4 "G1, G3, G4"

标签: rdplyrgroup-by

解决方案


这是使用dplyr包&的解决方案paste

library(dplyr)

dat %>%
  group_by(v1) %>%
  mutate(sub_group = paste(sort(unique(v2)), collapse = ", "))
#> # A tibble: 8 x 3
#> # Groups:   v1 [3]
#>   v1    v2    sub_group 
#>   <chr> <chr> <chr>     
#> 1 A     G1    G1        
#> 2 A     G1    G1        
#> 3 B     G1    G1, G2    
#> 4 B     G2    G1, G2    
#> 5 C     G1    G1, G3, G4
#> 6 C     G3    G1, G3, G4
#> 7 C     G3    G1, G3, G4
#> 8 C     G4    G1, G3, G4

reprex 包于 2021-05-26 创建 (v2.0.0 )


推荐阅读