使用data.table从长格式到宽格式折叠列

问题描述 投票:0回答:1

我如何使用data.table执行以下操作?

xy <- read.table(text = "Subject Product
1   ProdA
1   ProdB
1   ProdC
2   ProdB
2   ProdC
2   ProdD
3   ProdA
3   ProdB", header = TRUE)

aggregate(Product ~ Subject, FUN = paste, collapse = ";", data = xy)

使用dcast,我得到了多个带有NA的列,但是我需要使用“ +”分隔符折叠每个主题的所有列,并删除NA值。

dcast(xy, Subject ~ Product, value.var = "Product")
r data.table
1个回答
0
投票

我们通过总结而不是用dcast进行data.table分组

library(data.table)
setDT(xy)[, .(Product = paste(Product, collapse=";")), by = Subject]
© www.soinside.com 2019 - 2024. All rights reserved.