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

时间:2021-03-11 08:51:11

标签: stata

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

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

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

1 个答案:

答案 0 :(得分:0)

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]))