我需要生成变量 sum
,它将跨报告者-合作伙伴对和年份的 TA_envi_tot
的变化累加起来。 reporter_iso
和 partner_iso
是字符串变量。同时,id
由 egen 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
答案 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]))