作者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/cn.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