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。我暫時用不到,所以留待以後再研究。

標籤: