Stata中egen循环变量已定义报错,无法用replace+rowmiss求解决方法
Stata循环中egen rowmiss报错的解决方法
问题原因
你的循环代码每次执行都会用egen生成同名变量TEST,第一次循环后TEST已经存在,后续egen命令因为无法覆盖已存在的变量,就会抛出「变量名称已定义」的错误。另外rowmiss()是egen专属函数,确实不能直接和replace搭配使用。
替代解决思路
可以通过临时变量+替换赋值的方式实现需求,步骤如下:
- 先初始化目标变量
TEST为缺失值 - 在循环中生成临时变量存储当前循环的行缺失数
- 将临时变量的值按条件替换到
TEST中 - 临时变量会在循环结束后被Stata自动清理,不会残留
修正后的代码
* 初始化TEST变量为缺失值 gen TEST = . foreach X of num 1/42 { * 生成临时变量存储当前循环的行缺失数 tempvar temp_miss egen `temp_miss' = rowmiss(Day1Complete-Day`X'Complete) * 将符合条件的观测值替换到TEST中 replace TEST = `temp_miss' if Admission_Time == `X' }
内容的提问来源于stack exchange,提问作者jackahall
相关产品推荐
相关产品推荐

