当我在table命令中使用字符串变量时,为什么Stata会抱怨一个神秘的错误?

时间:2014-11-05 23:57:33

标签: stata

此示例代码:

sysuse auto, clear
decode foreign, g(foreign_str)
table foreign, contents(n foreign_str mean mpg)

在Stata 13.1中引发r(111)variable __000002 not found错误。跟踪错误会告诉我它正在尝试运行format __000002 %9.0gc并在找不到变量时崩溃。如果我在clist中切换变量的顺序,即table foreign, contents(n mpg_rank mean mpg),我会得到相同的错误但是__000003而不是__000002,所以看起来Stata在找到字符串变量时崩溃了。如果我用数字变量替换字符串变量,则不会发生错误。

我知道计算字符串变量的汇总统计数据没有意义,但计算字符串变量(在rowvar指定的每个组中)的观察数量是完全合理的。

1 个答案:

答案 0 :(得分:3)

Stata抱怨是因为__000002命令(__000003在内部使用)未创建变量collapse(如果更改顺序,则为table)(由于collapse (count) foreign_str type mismatch r(109); 在内部使用)以下错误:

capture

用户看不到实际发生的情况,因为collapsetrace结合使用,并且- capture collapse `clist' `wgt', by(`varlist' `by') fast `cw' = capture collapse (count) __000002=foreign_str (mean) __000003=mpg , by(foreign ) fast 的输出确认:

111

只有错误代码135table的规定,因此contents()命令继续运行,直到无法找到上述变量时碰到了墙。

Stata 14和更高版本会检查用户在collapse选项中提供的变量,并且仅接受数字类型,如果不是这种情况,则会发出更具信息性的错误消息。

还值得指出的是,?在最新的Stata版本中对字符串的处理有所不同。