Stata: 加總同性質的資料(Aggregate similar Observations)

我們知道要如何建立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。我暫時用不到,所以留待以後再研究。

9 thoughts on “Stata: 加總同性質的資料(Aggregate similar Observations)”

  1. 您好:
    不好意思想請問您,如果我的資料是:
    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中皆會重覆,所以無法得到結果,真的困難許久,懇求您的指教!謝謝您!

  2. 您好:
    我想可能是我()內的變數名與()前的變數名有相關,才會造成這個錯誤,更正後輸入,沒有跳出這個錯誤了…但是也沒跳出結果..
    只跳出一行空行..不知是資料太大算不出來還是怎樣..我覺得我前途堪憂…謝謝您!…

  3. 您好:
    嗨!@@ 抱歉又是我= =,想請問您若是資料變成:
    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)
    跑出來後結果好像不是我要的@@…
    抱歉我一直打擾您,實在是我的工具書內容有限…真的很感謝您!謝謝!!

  4. 有沒有更簡單的方式我不知道,我只會用下面這種:先collapse,用egen產生各id的income所得,然後再算百分比。

    collapse (sum) income, by (id type)
    by id: egen tincome=sum(income)
    gen incomep=income/tincome

    看工具書不如多看看help collapse,我覺得對初學者滿有幫助的。

    有其它問題再說吧!

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Scroll to Top
Verified by MonsterInsights