如何生成组中变量随时间变化的累积和

How to generate cumulative sum of changes of a variable in a group across time

我需要生成变量 sum,该变量累加了 TA_envi_tot 跨记者-合作伙伴对和年份的变化。 reporter_isopartner_iso 是字符串变量。同时,idegen id =group(reporter_iso partner_iso)生成。

我尝试了这些代码,但无法在下面的“总和”列中生成值:

bysort id (year): gen sum=TA_envi_tot[_n] + TA_envi_tot[_n+1] if TA_envi_tot[_n]!=TA_envi_tot[_n-1]
bysort id (year): replace sum = sum[_n-1] if missing(sum)

id  reporter_iso    partner_iso year    TA_envi_tot sum
3271    ATG              DEU    1981           0     0
3271    ATG              DEU    1982           0     0
3271    ATG              DEU    1983           0     0
3271    ATG              DEU    1984          36    36
3271    ATG              DEU    1985          36    36
3271    ATG              DEU    1986          36    36
3271    ATG              DEU    1987          67    103
3271    ATG              DEU    1988          67    103
3271    ATG              DEU    1989          67    103
4217    BDI              BEL    1981           3    3
4217    BDI              BEL    1982           3    3
4217    BDI              BEL    1983           3    3
4217    BDI              BEL    1984          35    38
4217    BDI              BEL    1985          35    38
4217    BDI              BEL    1986          35    38
4217    BDI              BEL    1987          35    38
4217    BDI              BEL    1988          36    74
4217    BDI              BEL    1989          36    74
4217    BDI              BEL    1990          36    74
clear 

input id  str3 (reporter_iso    partner_iso) year    TA_envi_tot sum
3271    ATG              DEU    1981           0     0
3271    ATG              DEU    1982           0     0
3271    ATG              DEU    1983           0     0
3271    ATG              DEU    1984          36    36
3271    ATG              DEU    1985          36    36
3271    ATG              DEU    1986          36    36
3271    ATG              DEU    1987          67    103
3271    ATG              DEU    1988          67    103
3271    ATG              DEU    1989          67    103
4217    BDI              BEL    1981           3    3
4217    BDI              BEL    1982           3    3
4217    BDI              BEL    1983           3    3
4217    BDI              BEL    1984          35    38
4217    BDI              BEL    1985          35    38
4217    BDI              BEL    1986          35    38
4217    BDI              BEL    1987          35    38
4217    BDI              BEL    1988          36    74
4217    BDI              BEL    1989          36    74
4217    BDI              BEL    1990          36    74
end 

bysort id (year) : gen wanted = sum(TA_envi_tot * (TA_envi_tot != TA_envi_tot[_n-1]))