0

我被困在一个棘手的数据管理问题上,我需要在 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)

有谁知道这样的事情是否可能?

我在这个网站和谷歌上搜索过这个问题,但没有找到好的解决方案。

抱歉,如果这是我错过的一个简单问题。

4

1 回答 1

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'

用于分析变量列表。

于 2015-06-05T21:20:40.170 回答