Stata类型不匹配,并且没有发生错误的行号报告
我在谷歌上搜索了“类型不匹配”,似乎错误主要来自“替换” 事实上,我正在做一些替换,但我看不出这个错误是从哪里来的Stata类型不匹配,并且没有发生错误的行号报告,stata,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 postcri
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
为了了解出了什么问题,我做了以下操作
. describe sales price
storage display value
variable name type format label variable
> label
------------------------------------------------------
sales str8 %9s
price float %9.0g
破坏也没用
. destring sales, replace
sales contains nonnumeric characters; no replace
. dataex
input statement exceeds linesize limit. Try specifying fewer variables
而且,dataex不起作用
. destring sales, replace
sales contains nonnumeric characters; no replace
. 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显示错误行?反过来,当你没有告诉我们你的变量时,这不是一个可重复的例子 类型不匹配意味着您试图对字符串执行数字操作,反之亦然。在您的示例中,
year
可能是一个字符串变量。如果是,
destring year, replace
调试时:一旦遇到问题,Stata将立即停止并显示错误消息。否则,帮助跟踪
以了解有关程序跟踪的信息
您的示例语句可以全部压缩。在最后一个例子中,如果危机年份是2008年和2009年,那么你说的并不是真的
generate price = cond(year == 2014, 105.17, 0)
gen crisis = year==2008 | year==2009
gen postcrisis = year > 2009
非常感谢。但它并没有因为错误而停止。它只是停了下来,没有告诉我它停在哪里。我只是逐行注释了我的代码。发现“生成realsales=销售额/价格”是问题的原因。“破坏销售,替换”没有帮助。价格已经是数字了。候选原因可能是什么?那么,您的问题原来是源于您从未向我们展示的代码!同样的问题:您没有显示可复制的示例。请特别学习,请编辑您的问题,包括一个独立的例子。提示:使用
dataex
(与ssc inst dataex一起安装)提供数据示例。显示描述销售价格的结果
,然后是列出缺少的销售(实际(销售))
。您的不起作用
语句在每种情况下都没有抓住要点destring
表示下面的注释中有非数字字符,而我的list
语句(您没有尝试过)提供了一种查找它们的方法dataex
清楚地告诉您尝试更少的变量,您需要向我们展示的只是问题中提到的变量。我在这里看不到任何迹象表明您已尝试设置跟踪
。找出非数字字符是什么,并使用destring
选项删除它们。此外,正如您所知,一条语句是错误的,重复整个do
-file是一种糟糕的调试策略。根据您的编辑,sales
包含非数字字符。假设数据中有一些值不能解释为数字。数据可能包含$
或逗号?检查该变量的内容,然后使用忽略选项尝试解压
。有关语法和用法,请参见帮助销毁。