Loops Stata:如何在变量索引中使用标量
我想在变量索引中使用循环标量。示例代码:Loops Stata:如何在变量索引中使用标量,loops,syntax-error,stata,Loops,Syntax Error,Stata,我想在变量索引中使用循环标量。示例代码: forvalues j = 1(1)9 { gen cname_year`j' = CNAME if acyear == `j' if `j' > 1 { scalar endv = `j' - 1 forvalues k = 1(1)`endv' { replace cname_year`j' = cname_year`j'[_n+`k'] if acyear[_n+`k'] == `j' & ID[_n] == ID[_n+`k'
forvalues j = 1(1)9 {
gen cname_year`j' = CNAME if acyear == `j'
if `j' > 1 {
scalar endv = `j' - 1
forvalues k = 1(1)`endv' {
replace cname_year`j' = cname_year`j'[_n+`k'] if acyear[_n+`k'] == `j' & ID[_n] == ID[_n+`k']
}
}
}
下一行给出了一个“语法错误”:
我不知道如何解决这个问题。非常感谢任何帮助 这里不需要使用
标量,但如果需要,您肯定需要使用不同的语法。试试看
local endv = `j' - 1
较大的代码示例似乎以一种比较笨拙的方式处理面板数据。如果你在这方面遇到了更多的问题,你可能需要回到论坛上来,但我们需要更多的背景来明确正在尝试什么
如果要使用标量,那么语法将是
forvalues k = 1(1)`= endv'
或者(可以说是更明确、更好的风格),因为endv
可以是一个变量名
forvalues k = 1(1)`= scalar(endv)'
您使用的语法是为本地宏设计的,因此需要定义一个宏 谢谢你的回复!因此,看起来错误可能是由forvalues表达式生成的,而不是由我突出显示的行生成的。我会尝试你的建议,然后再报告。为了给大家提供更多关于我正在尝试做的事情的背景知识,基本上我正在尝试找到一种有效的方法,用一些字符串变量来折叠数据集。处理字符串的唯一“折叠”运算符是“first”和“last”--“firstnm”和“lastnm”只处理数值变量。因此,基本上,我试图将字符串变量的值复制回其集群的第一个位置,以便使用“collapse”命令的“first”操作符捕捉它们。通常,字符串变量出现在collapse
的by()
选项中。否则,降价会是什么样子?
forvalues k = 1(1)`= scalar(endv)'