Stata类型不匹配,并且没有报告错误发生的行号

时间:2016-08-15 08:58:09

标签: stata

我搜索了“类型不匹配”,似乎错误主要来自“替换”

确实我正在做一些更换,但我看不出那个错误的来源。

generate price=0.0
replace price=105.17 if year==2014

gen crisis=1 if year==2008 | year==2009
replace crisis=0 if year<2008 | year>2009

gen postcrisis=1 if year>2008
replace postcrisis=0 if year<=2008

此外,Stata没有显示错误发生在哪一行。这对调试来说非常糟糕。我该怎么做?

======================================

错误来自

generate realsales=sales/price

为了看出出了什么问题,我做了以下几点。

. describe sales price

              storage   display    value
variable name   type    format     label      variable
>  label
------------------------------------------------------
sales           str8    %9s                   
price           float   %9.0g         

并且destring不起作用。

. destring sales, replace
sales contains nonnumeric characters; no replace

此外,dataex无效。

. dataex
input statement exceeds linesize limit. Try specifying fewer variables

然而,当Stata因错误而停止时,它永远不会告诉我哪一行导致错误。它只是向我展示了以下几行。

112. 
. }

(146 vars, 10748 obs)
type mismatch
r(109);

end of do-file

r(109);

这对调试非常不方便。它真的像这样吗?有没有办法让Stata显示错误行?

1 个答案:

答案 0 :(得分:1)

反过来,因为你没有告诉我们你的变量,这不是一个可重复的例子。

类型不匹配意味着您尝试对字符串执行数字操作,或反之亦然。在您的示例中,可能year以某种方式是字符串变量。如果是的话,

destring year, replace 

在调试时:Stata会在遇到问题时立即停止并显示错误消息。否则,help trace以了解程序跟踪。

您的示例语句都可以压缩。在最后一个例子中,如果危机年份是2008年和2009年,那么你的意思并不重要。

generate price = cond(year == 2014, 105.17, 0) 

gen crisis = year==2008 | year==2009

gen postcrisis = year > 2009