循环以在一段时间内对值进行求和,并使用其他值

时间:2016-10-08 12:52:46

标签: loops date stata

我有一个名为结算和付款的数据集,我已将其附加在一起,然后按ID排序,这样人们就可以查看每个ID收取的帐单以及每个ID所做的付款。

以下是它的快照:   Dataset snapshot

contractaccount printdate paymentdate billingperiod duedate payable payment
12345           01jan2015                    201501 15jan2015   100 
12345                       13jan2015                                    50
12345                       13jan2015                                    50
12345           29jan2015                    201502 13feb2015   150 
12345                       03feb2015                                   150
12345           05mar2015                    201503 20mar2015   100 
12345                       21mar2015                                    80
12345                       22mar2015                                    20
23456           15jan2015                    201501 31jan2015   200  
23456                       20jan2015                                   200
23456           12feb2015                    201502 28feb2015   220 
23456                       13feb2015                                   100
23456                       15feb2015                                   100
23456                       20feb2015                                    20
23456           10mar2015                    201503 20mar2015   200 
23456                       18mar2015                                   100
23456                       20mar2015                                   100

如果在打印日期和延期付款之间进行付款,我打算对付款进行汇总,并且计费周期对应于打印日期的附加条件,例如,对于ID 12345,01jan2015和01之间的付款总和15jan2015,前提是billingperiod“201501”对应printdate 01jan2015。

我尝试过以下代码:

bysort contractaccount: gen paymentsum=sum(payment) if paymentdate<=duedate  & paymentdate>=printdate

但我仍然不知道如何添加上述附加条件。它也没有给我我想要的东西,因为代码为每个id生成了累积的支付金额。理想情况下,我希望生成一个输出,该输出将显示针对上述所有日期条件的每个ID所做的付款总额(对于每个结算周期,每个ID所支付的金额是多少)。

我有预感我需要写一个循环,这是另一个挑战,因为我仍然是Stata的新用户。

0 个答案:

没有答案