3 回答
TA贡献1963条经验 获得超6个赞
让我们给你的数据打电话。DF
> aggregate(id ~ brand, data = DF, c)
brand id
1 RadioShack 2308
2 Rag & Bone 4466
3 Ragu 1830, 4518
4 Ralph Lauren 1638, 2719, 2720, 2721, 2722
另一种选择aggregate是:
result <- aggregate(id ~ brand, data = DF, paste, collapse = ",")
这会产生同样的结果id不是list更多。感谢@Frank的评论。去看class在每一栏中尝试:
> sapply(result, class)
brand id
"factor" "character"
正如@DavidArenburg在评论中提到的,另一种选择是使用toString职能:
aggregate(id ~ brand, data = DF, toString)
TA贡献1813条经验 获得超2个赞
一条干净的线条data.table
library(data.table)
setDT(DF)
有两种选择:
结果作为一份清单
DF[ , .(id = list(id)), by = brand]
brand id
1: RadioShack 2308
2: Rag & Bone 4466
3: Ragu 1830,4518
4: Ralph Lauren 1638,2719,2720,2721,2722
>
结果为字符串
DF[ , .(id = paste(id, collapse=",")), by = brand]
brand id
1: RadioShack 2308
2: Rag & Bone 4466
3: Ragu 1830,4518
4: Ralph Lauren 1638,2719,2720,2721,2722
注
即使这两个结果出现同样的(即当您打印它们时,它们看起来是相同的),它们实际上是非常不同的,并且允许不同的功能。
也就是说,使用List选项(第一个选项),您就可以在源文件上执行功能。idS.
后者将允许您更容易地显示信息(包括导出到CSV或excel),但要在id需要把他们接回去。
- 3 回答
- 0 关注
- 619 浏览
添加回答
举报