我有短暂的健忘症。我记得有一个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
我过去曾使用过这个功能,但现在不记得了。有人可以帮忙吗? 谢谢
答案 0 :(得分:2)
使用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
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))