我們知道要如何建立dummy variable,基本上範圍都是在同一個observation,將特定某一或幾個欄位做處理。但是,如果你同一個人,有好幾個observation,你想要加總這些observation的某欄位,該怎麼辦?拿下面的例子來說,aid是文章流水號,sid是學生流水號。欄位1、2、3、4是我想要看的東西,是不同種類的修辭,裡面的值代表該修辭在該篇文章出現幾次。每一個學生寫的文章量不同,我想要計算學生文章總數,以及使用各修辭的總次數。
aid | sid | number | TW | 1 | 2 | 3 | 4 |
1 | 1 | 1 | 1 | 1 | |||
2 | 1 | 2 | 1 | 1 | |||
3 | 1 | 3 | 1 | 1 | |||
4 | 1 | 4 | 1 | ||||
5 | 1 | 5 | 1 | 1 | |||
6 | 2 | 1 | 1 | 1 | |||
7 | 2 | 2 | 1 | 1 | 1 | ||
8 | 2 | 3 | 1 | 1 | |||
9 | 2 | 4 | 1 | 1 | |||
10 | 2 | 5 | 1 | 1 | |||
11 | 2 | 6 | 1 | 1 | 1 |
換句話說,我想要得到這樣的結果:
sid number TW 1 2 3 4
1 5 1 0 4 0 0
2 6 1 0 4 0 4
number我要得到的是每個人寫幾篇文章,也就是count,欄位1、2、3、4要得到的是此學生使用修辭1、2、3、4的加總。這問題困擾了我很久,甚至直接拿出access來加總 (汗),後來總算在stata找到解決方案。
要使用的指令就是collapse。collapse的用處就是將資料整合起來,依stata說明的解釋是make dataset of summary dataset,也就是跟我們想要做的一樣。
我要依sid將資料整合起來,所以指令最後是加上, by (sid)。要collapse的欄位最重要的是欄位1至4,要加總,所以整行的語法像是:
collapse (sum) 1 2 3 4, by (sid)
如果有的地方要sum,有的地方要count,那語法就會變成:
collapse (sum) 1 2 3 4 (count) number, by (sid)
網友阿豆仔提問:如果資料是像這樣的,像要照id 和type加總,
id type income
1 1 200
1 1 100
1 2 50
2 1 100
2 1 200
2 3 150
並得到像這樣的結果:
id type income
1 1 300
1 2 50
2 1 300
2 3 150
該怎麼辦呢?
小小修改一下code就行: collapse (sum) income, by (id type)
如果是要看frequency和percentage,那要用的是contract。我暫時用不到,所以留待以後再研究。
您好:
不好意思想請問您,如果我的資料是:
id type income
1 1 200
1 1 100
1 2 50
2 1 100
2 1 200
2 3 150
也就是每個人的所得來源有1-9種,而這筆資料中有同一人之同一類所得,亦有同一人之不同類所得,
我想要得到的結果為:
id type income
1 1 300
1 2 50
2 1 300
2 3 150
有嘗試使用collapse,但因此筆資料中type1-9於不同id中皆會重覆,所以無法得到結果,真的困難許久,懇求您的指教!謝謝您!
collapse (sum) income, by (id type)
有問題再交流囉!
您好:
依據您提供的語法輸入後,卻出現
type may not be both target and by()
想請問這是什麼原因呢?
真的很感謝您的幫忙!謝謝!
我剛又試了一次,我的語法沒錯啊!
會出現這樣的錯誤表示你collapse後面的變數跟by裡面的重覆。麻煩你再檢查一下吧!
您好:
我想可能是我()內的變數名與()前的變數名有相關,才會造成這個錯誤,更正後輸入,沒有跳出這個錯誤了…但是也沒跳出結果..
只跳出一行空行..不知是資料太大算不出來還是怎樣..我覺得我前途堪憂…謝謝您!…
有跳出空行就表示完成了,你browse應該就能看到結果了。這樣你就不用擔心你前途堪憂了~~
您好:
嗨!@@ 抱歉又是我= =,想請問您若是資料變成:
id type income
1 1 200
1 4 100
2 1 50
2 3 200
而我想要的是
id type income%
1 1 200/(200+100)
1 4 100/(200+100)
2 1 50/(50+200)
2 3 200/(50+200)
也就是每個id之每個type所佔他個人總所得的比例,想請問您若是用collapse的語法是?
我用collapse (mean) Income, by (ID)
跑出來後結果好像不是我要的@@…
抱歉我一直打擾您,實在是我的工具書內容有限…真的很感謝您!謝謝!!
有沒有更簡單的方式我不知道,我只會用下面這種:先collapse,用egen產生各id的income所得,然後再算百分比。
collapse (sum) income, by (id type)
by id: egen tincome=sum(income)
gen incomep=income/tincome
看工具書不如多看看help collapse,我覺得對初學者滿有幫助的。
有其它問題再說吧!
您好:
真的很感謝您的幫忙!! 謝謝您!!
^_____________________^