在R中为同一客户传播和合并行记录

时间:2017-11-04 21:24:19

标签: r dplyr plyr

我有以下数据框,我试图将一个客户的多个交易合并为一个单一记录。

输入:

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_INTERESTallCustomers

1 个答案:

答案 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)

希望这有帮助