【发布时间】:2018-05-14 11:53:08
【问题描述】:
对于多个国家/地区,我有一个数据集,我想为每个国家/地区保留一个变量列表(在全局 vlist 中指定)。有些变量在某些国家不存在。
我希望 Stata 忽略这些变量的不存在并对其余变量执行 keep 命令。但是,问题在于国家一级的额外 for 循环,我正在努力整合。
这个问题类似于这些线程中提出的问题:
Stata. How to `keep` a list of variables given some of them may not exist?
How do I confirm existence of all respective variables of a variable list?
最终,我想为每个国家/地区提供一个数据集,该数据集仅包含vlist 中指定的变量(减去vlist 中不存在的变量)。
代码如下,大部分取自上面的线程:
clear all
set obs 5
local vlist v0 v1 v2 v3 v4 v5
foreach v of local vlist {
generate `v' = runiform()
}
save country1.DTA, replace
save country2.DTA, replace
save country3.DTA, replace
global vlist_example v0 v1 v6 // v6 is not part of the dataset
foreach country in country1 country2 country3 {
local keeplist = ""
foreach i of global vlist_example {
capture confirm variable `i'
if !rc {
local "`keeplist' `i'"
}
}
keep `keeplist'
save `country'beta2.DTA, replace
}
但是,这会产生以下错误:
rc not found
r(111);
我希望这足以描述我的问题,但如果需要更多解释,请告诉我。
【问题讨论】:
标签: loops stata capture stata-macros