You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何逐行从变量中随机选数存入新变量lot?原方法因变量非宏失效

Stata:逐行从多变量中随机选取值的解决方案

嘿,针对你需要从每个观测的lottery1到lottery5里随机挑一个值存入新变量lot的需求,我给你两种实用的方法,都不用纠结宏的问题:

方法1:用egen rowrnd一步到位(强烈推荐)

Stata的egen命令里有个rowrnd函数,专门干这个事儿——它会自动遍历每一行,从你指定的变量列表里随机选一个值生成新变量。代码超简洁:

egen lot = rowrnd(lottery1 lottery2 lottery3 lottery4 lottery5)

执行完这个命令,lot变量就已经是每一行随机选取的结果了,完全符合你的要求,连额外的步骤都省了。

方法2:手动生成随机列索引(适合需要追踪过程的场景)

如果你想清楚看到随机选择的逻辑,也可以先给每一行生成一个1到5的随机整数(代表要选第几个lottery变量),再根据这个索引取值:

* 生成1-5的随机整数,标记要选的列
gen col_index = runiformint(1, 5)

* 根据索引提取对应变量的值
gen lot = .
replace lot = lottery1 if col_index == 1
replace lot = lottery2 if col_index == 2
replace lot = lottery3 if col_index == 3
replace lot = lottery4 if col_index == 4
replace lot = lottery5 if col_index == 5

* 要是不需要保留索引变量,直接删掉就行
drop col_index

验证效果

你可以用下面的命令查看前10行的结果,确认随机选取是否正常工作:

list lottery1-lottery5 lot in 1/10

这样就能直观看到每个观测的lot值确实来自该行的5个lottery变量之一啦。

内容的提问来源于stack exchange,提问作者user12086936

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:02:13