3

我在工作中有一个问题:我已经合并了两个数据集,并且有许多具有相同内容的变量,但是在数据集 1 的变量中具有值的观察值在数据集 2 中具有缺失值。所以我需要将值从一个变量转移到另一个变量。

这是我迄今为止最好的镜头:

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 多个变量执行此操作是一项繁琐的任务——而且由于其中一些是数值变量,因此它变成了一项孤注一掷的任务。

4

1 回答 1

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

于 2011-07-19T21:44:24.097 回答