double forループを使用して集計しようとしているデータがあります。基本的には、TOP_LEVEL_CATEGORYごとに各MEM_IDの購入サイクルを計算したいと思います。データは、コード二重forループin無関係の出力を与える
PC_test <- NA
for(i in unique(test$MEM_ID)){
for(j in unique(test$TOP_LEVEL_CATEGORY)){
PC_test[c(i,j)] <- data.frame(c(MEM_ID=i,CATEGORY=j,ifelse(nrow(test[test$MEM_ID==i & test$TOP_LEVEL_CATEGORY==j,])<=2,
max(test[test$MEM_ID==i & test$TOP_LEVEL_CATEGORY==j,"ORDER_DEL_DATE"])-min(test[test$MEM_ID==i & test$TOP_LEVEL_CATEGORY==j,"ORDER_DEL_DATE"]),
max(test[test$MEM_ID==i & test$TOP_LEVEL_CATEGORY==j,"ORDER_DEL_DATE"])-maxN(test[test$MEM_ID==i & test$TOP_LEVEL_CATEGORY==j,"ORDER_DEL_DATE"]))))
}
}
注
MEM_ID ORDER_DEL_DATE TOP_LEVEL_CATEGORY
999984 2016-01-07 household
999984 2016-02-03 household
999980 2015-12-16 household
999980 2016-01-03 household
999980 2016-01-05 household
999980 2016-02-14 household
999984 2016-01-07 personal-care
999980 2016-01-03 personal-care
999980 2016-01-30 personal-care
、以下のように示される:MAXN機能は、第二の最大を与えます。 I形式以下で出力を期待し、以下のように
NA. X999984 household personal.care X999980
NA 999984 999980 999980 999980
NA personal-care household personal-care personal-care
NA 0 40 27 27
を無関係の出力を投げる
は、
MEM_ID TOP_LEVEL_CATEGORY PC_test
999984 household 27
999984 personal-care 0
999980 household 40
999980 personal-care 27
ヘルプが大幅に高く評価されています。前もって感謝します!!!
'for'ループは必要ありません(' by'や 'aggregate'のような機能が役に立ちます)。 __pleaseあなたの質問で「購入サイクル」がどのように計算されたかの説明を追加してください.__ – bouncyball
@bouncyball、購入サイクルは、特定の顧客が前回の前回の購入から最後の購入をした時期です。 – Yashwanth