Цикл для суммирования значений за определенный период времени с дополнительными значениями

#loops #date #stata

#циклы #Дата #stata

Вопрос:

У меня есть набор данных под названием «выставление счетов» и «платежи», которые я добавил вместе, затем отсортировал по идентификатору, чтобы можно было просматривать счета, выставленные каждому идентификатору, и платежи, произведенные по каждому идентификатору.

Вот его снимок: снимок набора данных

 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
  

Я намерен суммировать произведенные платежи, если платеж производится между датой печати и датой назначения, с дополнительным условием, чтобы период выставления счетов соответствовал дате печати, например, суммировать платежи, произведенные по идентификатору 12345, между 01 января 2015 и 15 января 2015, при условии, что период выставления счетов «201501» соответствует дате печати01 января 2015 года.

Я попробовал следующий код:

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

но я все еще не знаю, как добавить упомянутое выше дополнительное условие. Это также не дает мне того, что я хочу, поскольку код сгенерировал совокупную сумму платежей для каждого идентификатора. В идеале я хотел бы сгенерировать вывод, который показывал бы сумму платежей, произведенных для каждого идентификатора, с учетом всех вышеупомянутых условий даты (для каждого периода выставления счетов, какова сумма платежей, произведенных каждым идентификатором).

У меня есть подозрение, что мне нужно будет написать цикл для этого, что является еще одной проблемой, поскольку я все еще новый пользователь Stata.

Комментарии:

1. Пример данных, которые можно скопировать и вставить, поможет вашему делу. Большинство советов по statalist.org/forums/help применимо и здесь.

2. Привет, Ник, спасибо за совет! Я обновил свой запрос здесь