我有以下数据框,我试图将一个客户的多个交易合并为一个单一记录。
输入:
ST_DATE ND_DATE LO_NO ACTV_CODE ACTV_AMT AB_NO FEATURE_CODE L_NU
7/27/16 7/27/16 265 O 15 1 INTEREST 855
7/27/16 7/27/16 265 O 14 1 INSTALLMENT 855
预期产出:
ST_DATE ND_DATE LO_NO ACTV_CODE ACTV_AMT AB_NO FEATURE_INTEREST FEATURE_INSTALLMENT L_NU
7/27/16 7/27/16 265 O 29 1 1 1 855
尝试:
install1 <- install %>%
group_by(LO_NO,AB_NO,L_NU) %>%
slice(which.min(as.Date(ST_DATE, '%Y/%m/%d'))) %>%
slice(which.max(as.Date(ND_DATE, '%Y/%m/%d'))) %>%
summarise(ACTV_AMT = sum(ACTV_AMT)) %>%
spread(FEATURE_CODE,fill = 0) %>% # confused here on what to put key value pairs so that I can get the above output
任何人都可以帮我实现代码。有很多feature_codes
可用,如果该功能代码与客户没有关联fill 0
,或者如果有2 same feature_codes
,那么INTEREST在该月份应该是fill as 2
两倍FEATURE_INTEREST
在allCustomers
答案 0 :(得分:1)
您可以先使用分组依据,然后使用dcast分散汇总值 -
install1 <- install %>%
group_by(LO_NO,AB_NO,L_NU,FEATURE_CODE) %>%
summarise(count1= n())
library(reshape2)
final <- dcast(install1, formula = LO_NO + AB_NO + L_NU ~ FEATURE_CODE, fill = 0)
希望这有帮助