在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)
答案 0 :(得分:3)
我认为您的意思是产品出现的次数,而不是每种ID的产品数量。
这是一个使用data.table
和reshape
的解决方案,但分为两步:首先,我计算长格式的产品数量,然后将数据转换为宽数据。我认为使用plyr
和ddply
会更好。
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