在 varlist 中指定变量之前的变量处停止
Stopping at the variable before a specified variable in a varlist
我被困在一个棘手的数据管理问题上,我需要在 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 上搜索过这个问题,但没有找到好的解决方案。
抱歉,这是一个我错过的简单问题。
这是一种基于您的代码构建的方法。
. 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'
用于分析变量列表。
我被困在一个棘手的数据管理问题上,我需要在 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 上搜索过这个问题,但没有找到好的解决方案。
抱歉,这是一个我错过的简单问题。
这是一种基于您的代码构建的方法。
. 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'
用于分析变量列表。