stata forvalues循环中引号太少和无效错误

时间:2017-10-02 08:12:07

标签: stata

我使用以下forvalues循环,但它给了我错误,

forvalues i=1/22919 {
quietly replace standarisedname="`y`i''" if schoolname=="`x`i''" & missing(standarisedname)
}

类型不匹配(r(109))错误

但是当我使用复合双引号时,比如

forvalues i=1/22919 {
quietly replace standarisedname=`"`y`i''"' if schoolname==`"`x`i''"' & missing(standarisedname)
}

返回的引号错误太少

当我使用时,

forvalues i=1/22919 {
quietly replace standarisedname=""`y`i''"" if schoolname==""`x`i''"" & missing(standarisedname)
}
forvalues i=1/22919 {
quietly replace standarisedname="`"`y`i''"'" if schoolname=="`"`x`i''"'" & missing(standarisedname)
}

无效'公共'返回错误(198)。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

这不是一个完整的答案,但它很长,包含太多的语法作为评论。很难看出这里真正的问题是什么,因为你的例子不可重复。

这意味着您有2 x 22919个本地宏,名为y1y22919x1x22919。正确?

类型不匹配意味着您引用的一个或两个变量不是字符串。请告诉我们

的结果
describe schoolname standardisedname 

我在第二个例子中看不到无与伦比的引号。

在你的上一个例子中

""`y`i''""

和类似的用途显然没有帮助你。嵌套""通常没有帮助。据推测,public是您正在使用的本地宏之一的文本的一部分。

我建议你备份并解释你想要做什么,因为我的感觉是会有一种更简单的方法。