Hi all,

I have a dataset like this
Code:
* Example generated by -dataex-. To install: ssc install dataex
clear
input float(newdate dateid) long userid double amount
21297  90 1 1
21299  92 1 2
21303  96 1 3
21304  97 1 1
21305  98 1 4
21306  99 2 1
21306  99 1 9
21307 100 1 1
end
format %td newdate
I have a time-series dataset for thousands of users, and not all users have values (of amount) for all observed days. In fact, on those days, they have values at 0. From the initial dataset, I used the following codes to manually do it for only 2 users.
Code:
* Reshape to WIDE in order to replace missing values to 0
    reshape wide amount, i(newdate dateid) j(userid)
    
    replace amount1 = 0 if amount1 == .
    replace amount2 = 0 if amount2 == .
    list
* Reshape back to LONG
    reshape long
    list, sepby(newdate)
     +--------------------------------------+
     |   newdate   dateid   userid   amount |
     |--------------------------------------|
  1. | 23apr2018       90        1        1 |
  2. | 23apr2018       90        2        0 |
     |--------------------------------------|
  3. | 25apr2018       92        1        2 |
  4. | 25apr2018       92        2        0 |
     |--------------------------------------|
  5. | 29apr2018       96        1        3 |
  6. | 29apr2018       96        2        0 |
     |--------------------------------------|
  7. | 30apr2018       97        1        1 |
  8. | 30apr2018       97        2        0 |
     |--------------------------------------|
  9. | 01may2018       98        1        4 |
 10. | 01may2018       98        2        0 |
     |--------------------------------------|
 11. | 02may2018       99        1        9 |
 12. | 02may2018       99        2        1 |
     |--------------------------------------|
 13. | 03may2018      100        1        1 |
 14. | 03may2018      100        2        0 |
     +--------------------------------------+
I can manually do it with only 2 users, but for thousands of users, I can not.

I know in Stata we can do it with loop but I can not manage to do it myself. Thank you for your help.

Best regards,

Thong Nguyen