作者Linethan (我要什麼?)
站內Statistics
標題[程式] stata產生隨機變數by group
時間Mon Sep 29 14:59:35 2014
[軟體程式類別]:
stata
[程式問題]:
generate random number at group level
[軟體熟悉度]:
新手(不到1個月)
[問題敘述]:
我有一個panel data set
現在需要產生一個新變數是random number
但是只隨著group level改變
比方說 我有一欄叫group 其值為1,2,3,....
前一百筆資料group=1, 101~200筆資料group=2,....依此類推
我要給每一筆資料多加一個欄位是random number
但是每一個group 給予相同的random number
[程式範例]:
我試著寫:
by group: gen v=rnormal(0,1)
但是這樣產生的新變數v 在同一個group下也都不一樣
為什麼會這樣?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 209.6.159.42
※ 文章網址: http://webptt.com/m.aspx?n=bbs/Statistics/M.1411973977.A.691.html
※ 編輯: Linethan (209.6.159.42), 09/29/2014 15:00:15
1F:推 otamatone: by的指令是用在每一個group之下重複一樣的command 09/30 01:08
2F:→ otamatone: 所以就變成每一群之下都產生一組random number 09/30 01:08
3F:→ Linethan: 是的 所以我沒辦法用by 給每一個group "一個"隨機亂數 09/30 09:08
4F:→ Linethan: 應該怎麼改才可以呢? 09/30 09:08
5F:推 otamatone: 你可以先產生前100筆random number 09/30 11:09
6F:→ otamatone: gen v = rnormal(0,1) in 1/100 09/30 11:10
7F:→ otamatone: 之後的第101筆跟第1筆一樣, 102跟2一樣, ... 09/30 11:11
8F:→ otamatone: replace v = v[_n-100] if missing(v) 09/30 11:11
9F:→ otamatone: 這是我能想到的方法XD 感覺應該有高級一點的做法 09/30 11:12
10F:推 riirene: by group, sort: generate v = rnormal(0,1) if _n == 1 09/30 19:16
11F:→ riirene: by group: replace v = v[1] 09/30 19:16