library(ttfriends)

Combine groups by column

Create example data

df <- data.frame(x= c("A","A","B","B","B","C"),y=c("a","b","a","a","b","a"),z=1:6)
df
#>   x y z
#> 1 A a 1
#> 2 A b 2
#> 3 B a 3
#> 4 B a 4
#> 5 B b 5
#> 6 C a 6

Default parameter

table_bind_group(object = df,id = "x",col = "y")
#> # A tibble: 3 × 2
#> # Groups:   x [3]
#>   x     groups
#>   <fct> <chr> 
#> 1 A     a;b   
#> 2 B     a;b   
#> 3 C     a

Keep the other columns

table_bind_group(object = df,id = "x",col = "y",keep = TRUE)
#> # A tibble: 5 × 4
#>   x     y         z groups
#>   <fct> <fct> <int> <chr> 
#> 1 A     a         1 a;b   
#> 2 A     b         2 a;b   
#> 3 B     a         3 a;b   
#> 4 B     b         5 a;b   
#> 5 C     a         6 a

Turn off unique filter

table_bind_group(object = df,id = "x",col = "y",unique = FALSE)
#> # A tibble: 3 × 2
#> # Groups:   x [3]
#>   x     groups
#>   <fct> <chr> 
#> 1 A     a;b   
#> 2 B     a;a;b 
#> 3 C     a

Add count

table_bind_group(object = df,id = "x",col = "y",count = TRUE)
#> # A tibble: 3 × 3
#> # Groups:   x [3]
#>   x     groups count
#>   <fct> <chr>  <dbl>
#> 1 A     a;b        2
#> 2 B     a;b        2
#> 3 C     a          1

Split groups by column

Default parameter

df2 <- data.frame(x=c("A","B"),y=c("123","4567"),z=c("C","D"))
df2
#>   x    y z
#> 1 A  123 C
#> 2 B 4567 D
table_split_group(object = df2, col="y")
#> # A tibble: 7 × 3
#>   x     y     z    
#>   <fct> <chr> <fct>
#> 1 A     1     C    
#> 2 A     2     C    
#> 3 A     3     C    
#> 4 B     4     D    
#> 5 B     5     D    
#> 6 B     6     D    
#> 7 B     7     D

Ignore header

df3 <- data.frame(x=c("A","B"),y=c("apple123","banana4567"),z=c("C","D"))
df3
#>   x          y z
#> 1 A   apple123 C
#> 2 B banana4567 D
table_split_group(object = df3, col="y", header=c("apple","banana"))
#> # A tibble: 7 × 3
#>   x     y       z    
#>   <fct> <chr>   <fct>
#> 1 A     apple1  C    
#> 2 A     apple2  C    
#> 3 A     apple3  C    
#> 4 B     banana4 D    
#> 5 B     banana5 D    
#> 6 B     banana6 D    
#> 7 B     banana7 D

Custom separator

df4 <- data.frame(x=c("A","B"),y=c("OTU1;k=1;p=2;c=3","OTU2;k=1;p=2;c=4"),z=c("C","D"))
df4
#>   x                y z
#> 1 A OTU1;k=1;p=2;c=3 C
#> 2 B OTU2;k=1;p=2;c=4 D
table_split_group(object = df4, col="y", header="OTU.;", sep=";")
#> # A tibble: 6 × 3
#>   x     y        z    
#>   <fct> <chr>    <fct>
#> 1 A     OTU1;k=1 C    
#> 2 A     OTU1;p=2 C    
#> 3 A     OTU1;c=3 C    
#> 4 B     OTU2;k=1 D    
#> 5 B     OTU2;p=2 D    
#> 6 B     OTU2;c=4 D