我在工作中遇到了问题:我合并了两个数据集,并且有许多变量具有相同的内容,但是在数据集1的变量中具有值的观察值在数据集中具有缺失值所以我需要将一个变量的值传递给另一个变量。
这是我迄今为止最好的一次拍摄:
replace V23=1 if V232==1
replace V23=2 if V232==2
replace V23=3 if V232==3
replace V23=4 if V232==4
replace V23=8 if V232==8
replace V23=.u if V232==10 | V232==9
然而,对40多个变量来说这是一项繁琐的工作 - 而且由于其中一些是数值变量,因此它变成了一个sisyphean任务。
答案 0 :(得分:2)
这是一个开始:
foreach v of varlist v23 {
local w `v'2
replace `v' = `w' if missing(`v')
replace `v' = .u if `w' == 10 | `w' == 9
}
注意这个解决方案如何依赖于变量名之间的词汇关系:它假设旧变量“v23”与新变量“v232”相关联。您可以列出此类关联并使用它,但这很不方便。如有必要,重命名变量可能更容易符合这样的约定,然后运行替换脚本,然后恢复所需的名称。
如果您不熟悉此类自动化,请阅读macro
和foreach
的帮助页。