我搜索了“类型不匹配”,似乎错误主要来自“替换”
确实我正在做一些更换,但我看不出那个错误的来源。
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显示错误行?
答案 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