2017-03-08 102 views
0

我有很难产生一个计数变量count = _n不平衡面板数据与在Stata下列条件的最后一个值:计数变量,重复空调上二进制变量

开始计数(从_n )每次二进制变量等于1,如果它从1变为0,则count重复上一个值,直到二进制再次变为1(在这种情况下继续从停止的位置开始计数)。

我觉得这是很容易表现出我的问题给我的数据集的例子:

year country binary count[variable that I want to create] 
1959  1  0  0 
1960  1  0  0 
1961  1  1  1 
1962  1  1  2 
1963  1  1  3 
1964  1  0  3 
1965  1  0  3 
1966  1  .  . 
1967  1  1  4 
1959  2  0  0 
1960  2  0  0 
1961  2  0  0 
1962  2  1  1 
1963  2  1  2 
1964  2  .  . 
1965  2  .  . 
1966  2  0  2 
1967  2  0  2 
1968  2  1  3 
1969  2  1  4 
1970  2  0  4 
1959  3  1  1 
1960  3  1  2 
1961  3  1  3 
1962  3  0  3 
1963  3  .  . 
1964  3  1  4 
1965  3  .  . 
1966  3  0  4 

在上面的例子中,对于country = 1,我的新的变量count起始于1961年计数(从_n) (因为今年的二进制变量等于1),那么它再次计数(从_n)直到binary = 0(保持相同的最后count数字)。

缺失值在新变量中保留为缺失值。

回答

1

根据显示的数据,以下内容会创建ncount,它与您的值count相匹配。

bysort country (year): generate ncount = sum(binary) 
replace ncount = . if missing(binary) 
list, sepby(country) 
+0

威廉的优秀解决方案可以缩写为'bysort country(year):generate ncount = cond(missing(binary),。,sum(binary))'。 –