以前寫過一篇:Stata: 加總同性質的資料(Aggregate similar Observations),裡面用的方法是collapse,這種情況用於:一個人有多筆資料 (用術語說,就是資料格式是長格式),你想要加總同性質資料,將每個人的資料變成一筆。
這種方法雖好,但如果你想要維持資料是長格式 (一個人有多筆資料),那collapse就不符合你的需求。
假設資料格式如下圖所示。sid代表student id,did代表文件 id,words代表每個文件的字數。
如果用 collpase 指令:
collapse (mean) words, by(sid)
結果會如下圖所示。原本一個學生有多筆sid,跑完collapse之後,每個學生只剩一筆資料了。
但這有可能不是你要的,你可能還想維持長格式,那該怎麼辦呢?重新載入資料,我們從頭來過。
如果想知道每個學生平均words,那可以利用egen指令:
bys sid: egen avgwords = mean(words)
結果如下圖所示:
兩種方法都可以,但結果稍有不同。要選用哪種,就看你要作哪種分析。
Lin博士,您好:
常看您的博客,从您的博客中获益良多。最近有个STATA编程的问题想请教您。
有如下格式数据:
ID Date Var1
AA 1980/01/02
B 1980/01/31
C 1982/02/16
D 1982/03/18
AA 1982/03/21
AA 1982/03/21
B 1982/03/22
AA 1983/06/30
E 1985/11/22
AA 1985/12/31
G 1987/01/01
D 1991/02/27
…
AA 1999/03/16
…
Z 2010/12/31
想在Var1列生成本行对应ID过去5年重复出现的次数(不计当次)。举例来说,对应AA 1985/12/31行,Var1应显示3
请问如何用stata编程?
非常感谢!
@Xiaofei Xing,
很想幫你,但一下子沒想出寫法。如果能丟進資料庫,用sql語法可能快一點。Stata實在是沒想到怎麼處理。
好的,谢谢您。
版主您好,時常閱讀您的部落格,從中受益良多,非常感謝您的分享。
最近在Stata資料處理上遇到一些問題,不知能否請教您?
我正在處理一個longitudinal 資料庫的工作史資料 (美國的NLSY),
目前遇到一個辨別及抓取資料的難題,
每個受訪者都有超過20年資料, (1979-2010)
工作史部分的問題是以整個訪問期間週別作為呈現方式 (week 1- week1740 )
我想要的資料是 每年最近的一份工作其中有多少週是 full-time 有多少週是part-time
我已經整理好每年該份工作的起始與結束的週別 (例如 week 325-week785)
資料庫本來就有 每工作者每週工作時數的資料,如 week1 = 35, week2= 20…
所以我現在有的資料是:
Case id/ year/最近工作起始週/最近工作結束/year/最近工作起始週/最近工作結束週/…week1 worked hr/week2 worked hr/….week1740 worked hour
1 /1979 /1 /52 /1980 /53 /86 … 35 /20 /…20
2 /1979 /20 /52 /1980 /20 /100…35/40/…10
3 /1979 /3 /40 /1980 /50 /99…20/20/…0
…………..
我想要的是,讓Stata自己抓取 工作起始週 與 工作結束週,例如 week20- week52
然後再自己下去對照 每週的工時,分辨出哪些週是 part-time 哪些週是 full-time
然後建立兩組變項 1979年最近工作full-time週數、 1979年最近工作part-time週數………一直到2010年,
試了好幾天都試不出來,不知道版主有沒有什麼好建議呢?
非常謝謝您!