总和&计算与条件匹配的行,按唯一值分组&变换表

时间:2013-06-05 23:56:27

标签: r aggregate data.table

在R中使用data.table包必须有一个简单而优雅的方法,但我无法搞清楚。矢量化操作更可取。

library(data.table)    
d1 <- as.Date("01-13-2013", '%m-%d-%Y')    
d2 <- as.Date("12-31-2013", '%m-%d-%Y')    
data <- data.frame(Date=sample(seq(d1,d2,1),10), Customer_ID=sample(1:5,20,replace=T), Product=sample(letters[1:5]), Store=sample(c("S1","S2")))

创建

ID Date_Prod_A Times_Purchased_A Date_Prod_C Times_Purchased_C

1 47  01-01-2012                 2           -                 -
2 26           -                 -  01-17-2012                 1

查找产品的所有值列表,并为每个产品添加两列。 此外,创建一个表格,显示每个ID显示的不同产品数量。


table <- data.table(data)

1 个答案:

答案 0 :(得分:3)

我认为您的意思是产品出现的次数,而不是每种ID的产品数量。

这是一个使用data.tablereshape的解决方案,但分为两步:首先,我计算长格式的产品数量,然后将数据转换为宽数据。我认为使用plyrddply会更好。

library(data.table)
DT <- as.data.table(dat1)
DT[,n := .N,by= ID]
reshape(DT,direction='wide',idvar='ID',timevar='Product',drop='Store')
  ID Purchase_date.Product_A n.Product_A Purchase_date.Product_C n.Product_C
1: 47              01-01-2012           2                      NA          NA
2: 26                      NA          NA              01-17-2012           1