Macros 宏的逻辑

Macros 宏的逻辑,macros,regression,stata,Macros,Regression,Stata,我是斯塔塔的新手。 假设我们有一个数据集,其中train和re78作为变量 为什么这个代码可以工作 sum train local a= r(N)*r(mean) regress re78 train outreg2 using TABLE_2.xls, addstat(A, `a') excel 但不是这个 sum train local a= r(N)*r(mean) sum `a'

我是斯塔塔的新手。 假设我们有一个数据集,其中
train
re78
作为变量

为什么这个代码可以工作

sum train
local a= r(N)*r(mean)                       
        


regress re78 train
outreg2 using TABLE_2.xls, addstat(A, `a') excel 
但不是这个

sum train
local a= r(N)*r(mean)
sum `a'
                    
这两种代码的目的都是调用局部变量
a

,在Stata中,术语变量是为数据集中的列保留的。本地宏称为本地宏,而不是本地变量

为什么您的第二个代码失败?在
求和序列
之后,本地宏
a
计算为
r(N)*r(平均值)
,因此应包含上次计算得出的值的总和或总和,应用
求和
。(您也可以使用
r(sum)

让我们假设在那之后你的总数是42

然后

被解释为

sum 42 
那么问题与使用本地宏无关。问题是,
summary
在这方面没有任何法律依据。
summary
的最低法定语法是指定变量名或根本不指定变量名,这被解释为表示所有变量。但是42,或者不管你的总数是多少,都不符合语法,而且是非法的

我不清楚你想要这个语法做什么,但它是不合法的

sum 42