2017-04-08 54 views
0

我有這種結構(IDEvent):變量記錄事件增量(無環路)

ID Event X 
A  0  0 
A  0  0 
A  1  1 
A  0  1 
B  0  0 
B  1  1 
B  0  1 
B  1  2 
B  0  2 
B  0  2 
B  1  3 

而且我想創建X,但我不能使用任何環路作爲數據庫很大。我希望有任何建議。

編輯:我嘗試了一些種bysort IDEvent沒有運氣:我現在用這種方式工作:

gen Spell=Event 

replace Spell=2 if Spell[_n-1]==1 & Spell[_n+1]==0 & ID[_n]==ID[_n-1] 

,但它不會工作,因爲我不能在第二或區分第三個+事件顯示在數據庫上。

解決

gen X=Event[_n] 
replace X=X[_n]+X[_n-1] if _n>1 & ID[_n]==ID[_n-1] 
+0

歡迎SO!你試過什麼了?請修改您的問題以顯示您的嘗試代碼。 – MERose

回答

0

數據集這樣需要的時間或其他序列變量。你當然應該創建一個,如果你沒有一個:

sort ID, stable 
by ID : gen t = _n 

那麼你需要的是剛剛

bysort ID (t) : gen wanted = sum(event) 

比你有什麼更清潔和更清晰。在Stata

help sum() 
search by 
search spell 

查看相關幫助文件和說明文章。

(你知道這種方法的,但你不能精確顯示您試了一下,所以我們不能對什麼是錯發表評論。)