此示例代码:
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指定的每个组中)的观察数量是完全合理的。
答案 0 :(得分:3)
Stata抱怨是因为__000002
命令(__000003
在内部使用)未创建变量collapse
(如果更改顺序,则为table
)(由于collapse (count) foreign_str
type mismatch
r(109);
在内部使用)以下错误:
capture
用户看不到实际发生的情况,因为collapse
与trace
结合使用,并且- capture collapse `clist' `wgt', by(`varlist' `by') fast `cw'
= capture collapse (count) __000002=foreign_str (mean) __000003=mpg , by(foreign ) fast
的输出确认:
111
只有错误代码135
和table
的规定,因此contents()
命令继续运行,直到无法找到上述变量时碰到了墙。
Stata 14和更高版本会检查用户在collapse
选项中提供的变量,并且仅接受数字类型,如果不是这种情况,则会发出更具信息性的错误消息。
还值得指出的是,?
在最新的Stata版本中对字符串的处理有所不同。