我遇到了一个棘手的数据管理问题,我需要在Stata中做。我使用的是版本13.1。
我需要处理40多个数据集,使用每个数据集中不同的变量子集。我无法包含我出于专有原因所做的数据或具体分析,但会尝试包含示例和代码。
我有一组数据集A-Z
。每个问题都有Q1
到Q200
。我需要进行一项分析,其中包括每个数据集上的varlist
条目,该条目排除了最后几个问题(处理背景信息)。我知道这个背景信息以某个问题开头(例如" MALE / FEMALE"),但该问题的实际数字因数据集而异。
这是我到目前为止所做的事情:
foreach X in A B C D E F {
use `X'_YEAR.dta, clear
lookfor "MALE/FEMALE"
local torename = r(varlist)
rename `torename' MF
ANALYSIS Q1 - MF
}
这有效但问题是我包括变量,它实际上是我应该开始排除的开始。我知道我可以将varlist
保存为宏,然后使用宏中的放置来排除,例如,第七个变量。
但是,我仍然坚持更进一步 - 使用此作为varlist
中的条目来停止变量MF
。类似于ANALYSIS Q1 - (MF - 1)
。
有人知道这样的事情是否可能?
我已经在这个网站和Google上搜索过这个问题,并且没有找到一个好的解决方案。
道歉,如果这是一个我错过的简单问题。
答案 0 :(得分:3)
这是基于代码的一种方法。
. sysuse auto.dta, clear
(1978 Automobile Data)
. quiet describe, varlist
. local vars `r(varlist)'
. display "vars - `vars'"
vars - make price mpg rep78 headroom trunk weight length turn displacement gear_ratio foreign
. lookfor "Circle"
storage display value
variable name type format label variable label
------------------------------------------------------------------------------------------------
turn int %8.0g Turn Circle (ft.)
. local stopvar `r(varlist)'
. display "stopvar - `stopvar'"
stopvar - turn
. local myvars
. foreach var in `vars' {
2. if "`var'" == "`stopvar'" continue, break
3. local myvars `myvars' `var'
4. }
. display "myvars - `myvars'"
myvars - make price mpg rep78 headroom trunk weight length
然后只需在需要分析变量列表的地方使用`myvars'。或者,如果您的变量列表始终以Q1开头,则可以将循环中的本地更改为
local lastvar `var'
并使用
Q1-`lastvar'
表示分析变量列表。