1

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

製品のすべての値のリストを見つけて、製品ごとに 2 つの列を追加します。また、ID ごとに異なる製品がいくつ表示されるかを示す表を作成します。


table <- data.table(data)
4

1 に答える 1

3

IDごとに、製品がいくつ表示されるかではなく、製品が何回表示されるかを意味していると思います。

data.tableここでは、 andを使用したソリューションreshapeですが、2 つの手順があります。最初に、長い形式で製品の数を計算し、次にデータを幅の広い形式に変換します。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
于 2013-06-06T00:44:11.153 に答える