Function Stata:在egen函数中带有异常的通配符

Function Stata:在egen函数中带有异常的通配符,function,stata,Function,Stata,我不熟悉使用宏,我想将它合并到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' `g

我不熟悉使用宏,我想将它合并到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*
,排除变量
V_E9*
,然后创建一个变量,该变量等于该列表中每个观察值的变量之和。但是,在执行
egen
命令后,我得到了一个语法错误。有人能帮我找出如何做我想做的事吗?

一些有技巧的代码:

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

在将宏传递到
egen
之前,使用
display
检查宏的内容

如果这是一个愚蠢的问题,很抱歉,但是在执行
egen
命令后,您是否没有收到语法错误?我很确定我的语法与你的语法相同,但每次执行时都会出现
无效语法r(198)
错误。在看到您的答案后,我将
display
命令添加到循环中,以确认宏达到了我想要的效果,因此+1。这并不愚蠢,因为我没有说它是经过测试的代码,但事实上确实如此。我没有错<代码>搜索r(198)给出“这些错误通常(但并非总是)是由于印刷错误造成的。你确定它们是一样的吗?你从屏幕上复制/粘贴了吗?宏周围的引号有时会出现问题,因为它们看起来是正确的,但实际上不是。事实上,我现在看到你发布的内容和我发布的内容实际上是相同的代码(在我最后一次编辑之后)。你能在Stata窗口中显示准确的输入/输出吗?你使用的是什么版本的Stata?是的,我四次检查了我的代码是否有拼写错误,但仍然无法理解,所以我只是复制并粘贴了你的,效果很好。谢谢我使用的是Stata 12。这只是为了向未来的读者表明,此处使用的
egen
与OP的问题无关,OP的问题似乎完全集中在对
本地
宏的误解上。