我有一个具有以下结构的数据集:
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
...
基本上它列出了在给定会话中采集的所有样本。
感谢任何指针或解决方案来解决这个问题。
答案 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]