按组将变量列为数据框列中的字符串

时间:2015-02-10 10:28:05

标签: r

我有一个具有以下结构的数据集:

df1 <- data.frame(
session = seq(1,10,1))

df2 <- data.frame(
session = rep(1:10, each=4),
sample = seq(1,40,1))

我需要返回的是具有以下结构的df1:

session | sample.list
 1      |    1,2,3,4
 2      |    5,6,7,8
 3      |    9,10,11,12
...

基本上它列出了在给定会话中采集的所有样本。

感谢任何指针或解决方案来解决这个问题。

1 个答案:

答案 0 :(得分:2)

基础R

aggregate(sample ~ session, df2, toString) 

或(取决于所需结果的类型)

aggregate(sample ~ session, df2, list)

或使用data.table

library(data.table)
setDT(df2)[, list(sample.list=toString(sample)), session]

或者如果您需要列作为列表

setDT(df2)[, list(sample.list=list(sample)), session]

更新

列出唯一的&#34;样本&#34;

 aggregate(sample ~ session, df2, function(x) toString(unique(x)))

或者

 setDT(df2)[, list(toString(unique(sample))), session]