【发布时间】:2014-09-02 03:53:16
【问题描述】:
输入:我有这些数据:
library(data.table)
ids <- c(10, 10, 10, 11, 12, 12)
items <- c('soup', 'rice', 'lemon', 'chicken', 'lamb', 'noodles')
orders <- as.data.table(list(id=ids, item=items))
> orders
id item
1: 10 soup
2: 10 rice
3: 10 lemon
4: 11 chicken
5: 12 lamb
6: 12 noodles
目标:需要达到这个目标(按 id 对所有项目进行分组):
id items
1: 10 soup,rice,lemon
2: 11 chicken
3: 12 lamb,noodles
我做了什么:我在 R 3.1.1(最新版本)上使用 data.table - 尝试了以下方法,应该可以:
orders[,list(items=list(item)), by=id]
但得到以下(不正确的)输出:
id items
1: 10 lamb,noodles,lemon
2: 11 lamb,noodles,lemon
3: 12 lamb,noodles,lemon
我做错了什么,使用 data.table 正确分组字符串的正确方法是什么?
【问题讨论】:
-
您提到的 Rv3.1.1 中的错误结果是 bug,已在 1.9.3 中修复。
标签: r aggregate data.table