问题描述
我是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'
这两个代码的目的都是调用局部变量a
。
解决方法
在Stata中,术语变量保留用于数据集中的列。局部宏称为局部宏,而不是局部变量。
为什么第二个代码失败?在sum train
之后,本地宏a
被计算为r(N) * r(mean)
,因此应包含上一次计算(应用summarize
)的值的总和或总和。 (您也可以只使用r(sum)
。)
让我们假设您的总和为42。
然后
sum `a'
被解释为
sum 42
,那么问题就与使用本地宏无关。问题在于summarize
在那里没有合法的事可做。 summarize
的最小合法语法是指定变量名或根本不指定变量名,这被解释为表示所有变量。但是42,或任何金额,都不适合语法,这是非法的。
我不清楚您希望此语法做什么,但这是不合法的。