这个问题是Robert Picard在这里提供的优秀答案的延伸:How to Randomly Assign to Groups of Different Sizes
我们有这个数据集,它与前一个问题相同,但添加了 year
变量:
sysuse census, clear
keep state region pop
order state pop region
decode region, gen(reg)
replace reg="NCntrl" if reg=="N Cntrl"
drop region
gen year=20
replace year=30 if _n>15
replace year=40 if _n>35
如果我只想在所有观察中重新随机分配 reg
(不考虑组),我可以实现上一篇文章的答案:
tempfile orig
save `orig'
keep reg
rename reg reg_new
set seed 234
gen double u = runiform()
sort u reg_new
merge 1:1 _n using `orig', nogen
如何修改代码以便 reg
被洗牌,但仅在 year
内?例如,有15个观察点 year==20
. 这些观察结果应该与其他年份分开进行改组 .
1 回答
改组一个变量不需要任何文件编排 . 这可能会缩短:
所有这一切,我认为只要您指定与数据集中的数字相同的样本大小,_465726就会这样做 . 这太过分了,因为你得到了所有变量 .