2017-03-08 24 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))'。 –