Stata - 如何生成随机整数

时间:2014-06-10 18:00:39

标签: random integer stata

我正在学习Stata并想知道如何生成随机整数(无需替换)。如果我总共有10行,我希望每一行都有一个从1到10的唯一整数。在R中,人们可以做到:

sample(1:10, 10)

但在Stata看起来似乎更难。从this Stata page开始,我看到了:

generate ui = floor((b-a+1)*runiform() + a)

如果我用a = 1和b = 10代替,我得到的东西接近我想要的东西,但它是替换样品。

在弄清楚这一部分之后,我将如何处理以下皱纹:我的数据成对出现。例如,在10个观察中,有5组2.每组2具有唯一标识符。我如何按随机顺序排列组(而不是观察结果)?数据看起来像这样:

obs   group  mem     value
1     A      x       9345
2     A      y       129
3     B      x       251
4     B      y       373
5     C      x       788
6     C      y       631
7     D      x       239
8     D      y       481
9     E      x       224
10    E      y       585  

obs是观察数字。 group是观察(行)所属的组。 mem是组中的成员标识符。每个组中都有一个x和一个y

1 个答案:

答案 0 :(得分:4)

第一个问题:

你可以随意改变观察标识符。

set obs 10
gen y = _n 
gen rnd = runiform()
sort rnd 

或者在Mata

jumble(1::10)

第二个问题:几种方式。这是一个。

gen rnd = runiform() 
bysort group (rnd): replace rnd = rnd[1] 
sort rnd 

一般注释:为了重现性,请事先设置随机数种子。

set seed 2803 

或其他什么。