我有包含客户产品和服务信息的月度数据。客户可以更改其帐户并添加服务或取消服务等。我需要能够从一个月到下一个月捕获这些更改。所以我有一些样本数据看起来像:
Month AcctKey AcctNo PrdDs PrdCd Units
7/1/2016 14162010 100ZZ01010109999 TPLBBVCEVID FTV 1
7/1/2016 14162010 100ZZ01010109999 TPLBBVCEVID FDR 1
7/1/2016 14162010 100ZZ01010109999 TPLBBVCEVID RAL 2
8/1/2016 14162010 100ZZ01010109999 DBLVCEVID FDR 0
8/1/2016 14162010 100ZZ01010109999 DBLVCEVID VPR 1
8/1/2016 14162010 100ZZ01010109999 DBLVCEVID RAL 1
8/1/2016 14162010 100ZZ01010109999 DBLVCEVID FTV 1
8/1/2016 14162010 100ZZ01010109999 DBLVCEVID FIR 2
9/1/2016 14162010 100ZZ01010109999 DBLVCEVID RAL 0
9/1/2016 14162010 100ZZ01010109999 DBLVCEVID FTV 1
9/1/2016 14162010 100ZZ01010109999 DBLVCEVID VPR 1
9/1/2016 14162010 100ZZ01010109999 DBLVCEVID FIR 2
这是我连接的三个数据帧。它是2016年3个月单个客户记录的一个例子。这个"客户"取消了服务并添加了其他一些服务。这看起来更清晰:
Month AcctKey AcctNo PrdDs FDR FIR FTV RAL VPR
7/1/2016 14162010 100ZZ01010109999 TPLBBVCEVID 1 0 1 2 0
8/1/2016 14162010 100ZZ01010109999 DBLVCEVID 0 2 1 1 1
9/1/2016 14162010 100ZZ01010109999 DBLVCEVID 0 2 1 0 1
8月FDR被取消,FIR被加入,FTV没有变化,RAL降级并最终在9月被取消,VPR被加入。
我希望创建另一个数据框,如:
Month AcctKey AcctNo PrdDs FDR FIR FTV RAL VPR PrdDsMvmt FDRMvmt FIRMvmt FTVMvmt RALMvmt VPRMvmt
7/1/2016 14162010 100ZZ01010109999 TPLBBVCEVID 1 0 1 2 0 - - - - - -
8/1/2016 14162010 100ZZ01010109999 DBLVCEVID 0 2 1 1 1 DBLVCEVID out in no_change down in
9/1/2016 14162010 100ZZ01010109999 DBLVCEVID 0 2 1 0 1 no_change no_change no_change no_change out no_change
7月第一个月的破折号向我表明这是第一张唱片。请注意,实际数据集在一个月内最多可达200万行(可能更多)。