我在两个地方工作,一个是我使用Stata 13,另一个是Stata 14。
即使某些特定命令发生了变化,我是否可以构建一个在两个版本中都有效的文件?
例如,以下代码无法使用Stata 13
sysuse auto, clear
ci means mpg price, level(90)
但是这个有效
sysuse auto, clear
ci mpg price, level(90)
Uising Stata 14,它将是相反的。
我考虑添加capture
,但在Stata 13或Stata 14中没有任何反应。
. sysuse auto, clear
(1978 Automobile Data)
. capture ci means mpg price, level(90)
. capture ci mpg price, level(90)
更新:noisily
之后添加capture
不幸没有帮助。以下是使用Stata 14的示例
. sysuse auto, clear
(1978 Automobile Data)
. capture noisily ci mpg price, level(90)
you must specify one of means, proportions, or variances following ci
. capture noisily ci means mpg price, level(90)
Variable | Obs Mean Std. Err. [90% Conf. Interval]
-------------+---------------------------------------------------------------
mpg | 74 21.2973 .6725511 20.17683 22.41776
price | 74 6165.257 342.8719 5594.033 6736.48
. gen lb=r(lb)
. su lb
Variable | Obs Mean Std. Dev. Min Max
-------------+---------------------------------------------------------
lb | 74 5594.033 0 5594.033 5594.033
但是当你反转两行代码时(使用Stata 14),这个不起作用:
. sysuse auto, clear
(1978 Automobile Data)
. capture noisily ci means mpg price, level(90)
Variable | Obs Mean Std. Err. [90% Conf. Interval]
-------------+---------------------------------------------------------------
mpg | 74 21.2973 .6725511 20.17683 22.41776
price | 74 6165.257 342.8719 5594.033 6736.48
. capture noisily ci mpg price, level(90)
you must specify one of means, proportions, or variances following ci
* The program didn't stop but:
. gen lb=r(lb)
(74 missing values generated)
. su lb
Variable | Obs Mean Std. Dev. Min Max
-------------+---------------------------------------------------------
lb | 0
最后,请注意,与Stata 14一起正常工作的第一个代码不适用于Stata 13
. sysuse auto, clear
(1978 Automobile Data)
. capture noisily ci mpg price, level(90)
Variable | Obs Mean Std. Err. [90% Conf. Interval]
-------------+---------------------------------------------------------------
mpg | 74 21.2973 .6725511 20.17683 22.41776
price | 74 6165.257 342.8719 5594.033 6736.48
. capture noisily ci means mpg price, level(90)
variable means not found
. gen lb=r(lb)
(74 missing values generated)
. su lb
Variable | Obs Mean Std. Dev. Min Max
-------------+--------------------------------------------------------
lb | 0
答案 0 :(得分:0)
如果您希望使用capture
来捕获错误,也会有后续行动。在这里,您首先尝试版本14语法,当且仅当失败时,您尝试使用版本13语法。
sysuse auto, clear
capture noisily ci means mpg price, level(90)
if _rc ci mpg price, level(90)
gen lb = r(lb)
此处if _rc
是if _rc > 0
的Stataish缩写,当且仅当程序失败时才会发生。 _rc
为0意味着一切都是合法的(具有微小的资格)。 _rc
是返回码。
我不清楚在变量中放一个值是个好主意,但这是一个不同的问题。此外,您要求两个置信区间,并且只有第一个的结果将保留在内存中。