我认为这可能很简单,但在Stata找不到办法,所以如果有人能帮助我,我真的很感激。我试图将值从一个组复制到另一个组,但限制值必须来自上一年。我认为我想要的例子和结果可能会更清楚:
我的数据如下:
year group_id educ place
1990 1 6 a
1990 1 6 b
1992 2 2 c
1992 2 2 d
1994 3 11 e
1994 3 11 f
1990 4 10 g
1990 4 10 h
1992 5 5 i
1992 5 5 j
1994 6 7 k
1994 6 7 l
我有不同的群组,由" group_id"和不同年份("年"),例如,我希望团体获得前一年的教育价值。但我不希望1990年从1994年获得价值。这可能吗?希望我的数据最终看起来像这样:
year group_id educ place prev_educ
1990 1 6 a .
1990 1 6 b .
1992 2 2 c 6
1992 2 2 d 6
1994 3 11 e 2
1994 3 11 f 2
1990 4 10 g .
1990 4 10 h .
1992 5 5 i 10
1992 5 5 j 10
1994 6 7 k 5
1994 6 7 l 5
我尝试了各种变体:
gen prev_educ=.
bysort group_id: replace prev_educ=educ[_N -1] if group_id[_n]!=group_id[_n-1]
这显然不是我想要的。
答案 0 :(得分:3)
这是一种非常危险的数据结构,因为无需过于谨慎的排序可能会破坏其完整性。似乎只有year
的顺序告诉你1,2,3属于一起而4,5,6属于一起。
这再现了你的例子:
clear
input year group_id educ str1 place
1990 1 6 a
1990 1 6 b
1992 2 2 c
1992 2 2 d
1994 3 11 e
1994 3 11 f
1990 4 10 g
1990 4 10 h
1992 5 5 i
1992 5 5 j
1994 6 7 k
1994 6 7 l
end
gen prev_educ = .
replace prev_educ = educ[_n-1] if year > year[_n-1]
replace prev_educ = prev_educ[_n-1] if group_id == group_id[_n-1] & missing(prev_educ)