【发布时间】:2016-04-01 09:21:25
【问题描述】:
我有一组 18 个 Stata 数据文件(每年一个),它们的名称是:
{aindresp.dta, bindresp.dta, ... , rindresp.dta}
我想从每个数据集中消除一些变量。为此,我想利用数据集中的许多变量具有相同名称的事实,加上数据集前缀 (a, b, c, ... r) 给出的前缀。例如,变量rach12 在数据集aindresp.dta 中被称为arach12 等。因此,为了清理每个数据集,我运行如下循环:
clear all
local list a b c d e f g h i j k l m n o p q r
foreach var of local list {
use `var'indresp.dta
drop `var'rach12 `var'jbchc1 `var'jbchc2 `var'jbchc3 `var'xpchcf var'xpchc
save `var'indresp.dta, replace
}
实际的循环要大得多。我正在删除大约 200 个变量。
问题是一些变量会随着时间的推移而改变名称,或者在几年后消失。添加其他变量。因此,一旦找不到变量,循环就会停止。这是因为 Stata 中的drop 命令停止了。然而,该命令无法强制它继续执行。
我怎样才能实现我的目标?我不想手动检查每个数据集。
【问题讨论】: