我是使用宏的新手,我希望将此"Wildcard with exceptions" syntax合并到Stata 12中的egen
函数中。我想按照以下方式做一些事情:
foreach i in E F G {
unab all`i' : V_`i'*
unab excl`i' : V_`i'9*
local general`i' : list all`i' - excl`i'
}
egen Exp_operating = rowtotal(`generalE')
egen Exp_capital = rowtotal(`generalF' `generalG')
简而言之,我想创建一个排除变量V_E*
的{{1}}变量列表,然后创建一个变量,该变量等于每个观察列表中每个变量的总和。但是,执行V_E9*
命令后出现语法错误。有人可以帮我弄清楚如何做我想做的事吗?
答案 0 :(得分:1)
一些技术代码:
clear all
set more off
*----- example data -----
set obs 1
gen V_E1 = 1
gen V_E2 = 2
gen V_E22 = 2
gen V_E3 = 3
gen V_F1 = 3
gen V_F2 = 4
gen V_F22 = 4
gen V_F3 = 5
*----- what you seek -----
foreach i in E F {
unab all`i' : V_`i'*
unab excl`i' : V_`i'2*
local general`i' : list all`i' - excl`i'
}
* display contents of macros
display "`generalE'"
display "`generalE' `generalF'"
* sum of V_E1 V_E3
egen Exp_operating = rowtotal(`generalE')
* sum of V_E1 V_E3 V_F1 V_F3
egen Exp_capital = rowtotal(`generalE' `generalF')
list
使用display
检查宏的内容,然后再将其传递给egen
。