Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops Stata:如何在变量索引中使用标量_Loops_Syntax Error_Stata - Fatal编程技术网

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)'