按组(R)生成元素列表的函数

时间:2018-06-06 13:08:01

标签: r list data.table

我有短暂的健忘症。我记得有一个R函数允许在聚合后获取组中的元素列表。 更清楚一点,从这里:

DT<-data.table(x=rep(c("cool","uncool"),each=3),group=c(1,1,2,2,3,3))

这给出了:

    x    group
   cool     1
   cool     1
   cool     2
 uncool     2
 uncool     3
 uncool     3

我想最终:

 x      group
cool    1,1,2
uncool  2,3,3

我过去曾使用过这个功能,但现在不记得了。有人可以帮忙吗? 谢谢

2 个答案:

答案 0 :(得分:2)

选项1

使用aggregate

aggregate(group ~ x, DT, toString)
#       x   group
#1   cool 1, 1, 2
#2 uncool 2, 3, 3

aggregate(group ~ x, DT, paste0, collapse = ",")
#       x group
#1   cool 1,1,2
#2 uncool 2,3,3

选项2

data.table方式

DT[, .(group = toString(group)), by = x]
#    x       group
#1:   cool 1, 1, 2
#2: uncool 2, 3, 3

DT[, .(group = paste0(group, collapse = ",")), by = x]
#        x group
#1:   cool 1,1,2
#2: uncool 2,3,3

答案 1 :(得分:1)

以下是使用tidyverse

的选项
library(tidyverse)
DT %>%
  group_by(x) %>%
  summarise(group = toString(group))