gpt4 book ai didi

stata - 鉴于其中一些变量可能不存在,如何保留变量列表?

转载 作者:行者123 更新时间:2023-12-02 02:51:55 25 4
gpt4 key购买 nike

我有 100 个 dta 文件。我有一个需要动态保存和保存临时副本的变量列表。某些变量可能存在于某个dta中,也可能不存在。

我需要 Stata 保留 dta 中存在的所有变量并忽略那些不存在的变量。

下面的代码有错误的语法,但它可以作为一个很好的伪代码,让人们大致了解应该做什么:

forval j = 1/100 {
use data`j'
local myVarList =""

foreach i of varlist var1 var2 var3 var4 var5 var6 var7 var8 {
capture sum `i'
if _rc = 0 {
`myVarList' = `myVarList'" "`i'
}
}

keep `myVarList'
save temporaryData`j'
}

有什么办法可以做到这一点吗?

最佳答案

您的代码存在很多问题。这是执行内部循环的一种方法。

/* one fake dataset */
set obs 5
gen var1 = 1
gen var2 = 2
gen var3 = "c"
gen z = 35

ds

/* keep part */
local masterlist "var1 var2"
local keeplist = ""

foreach i of local masterlist {
capture confirm variable `i'
if !_rc {
local keeplist "`keeplist' `i'"
}
}

keep `keeplist'

关键部分是你不能foreach i of varlist phantomvar,因为Stata会检查是否存在并排除错误。同样,将本地名称放在特殊引号中将会对其进行评估,但您正在尝试重新定义。您可能会发现设置跟踪在调试中是一个有用的功能。

这是更好的代码:

unab allvars: _all
local masterlist "var1 var2 phantomvar"
local keeplist: list allvars & masterlist
keep `keeplist'

关于stata - 鉴于其中一些变量可能不存在,如何保留变量列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17056016/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com