Stata 将另一个变量的值添加到循环中的变量

Stata 将另一个变量的值添加到循环中的变量,stata,Stata,我想做那样的事 gen var1 = 0 gen var2 = 0 forval x = 1/5 { replace var1 = `x' replace var2 = var2 + var1 } 也就是说,我想用它的旧值加上var1来替换var2。在Python这样的编程语言中,这是可行的,但在Stata中却不行。 我的目标不是创建很多变量!这就是为什么我想在循环的每个周期中更新变量var2。我的循环从1运行到100,我不想为了得到一个好的解决方案而创建100个变量 在我的示例中,在循环的

我想做那样的事

gen var1 = 0
gen var2 = 0

forval x = 1/5 {
replace var1 = `x'
replace var2 = var2 + var1
}
也就是说,我想用它的旧值加上var1来替换var2。在Python这样的编程语言中,这是可行的,但在Stata中却不行。 我的目标不是创建很多变量!这就是为什么我想在循环的每个周期中更新变量var2。我的循环从1运行到100,我不想为了得到一个好的解决方案而创建100个变量

在我的示例中,在循环的第一个循环中,var1变为1,var2也变为1。在第二个循环中,var1应为2,var2应为3,因为它将var2的旧值(即1)与var1的新值(即2)相加。在第三个循环中,var1应该变成3,var2应该变成3+3,这是var2的旧值加上这个循环中var1的值。诸如此类。这就是我想要的

有人能帮我吗?

无需循环:

clear all
set obs 100
gen id = _n
tsset id

gen var1 = _n - 1
gen var2 = 0
replace var2 = l.var2 + l.var1 if _n > 1
如果您只想知道“最终结果”,即循环结束时var1和var2的值,则可以使用Mata:

mata
a = 0
b = 0
for (i = 1 ; i <= 100; i++) {
    a = i
    b = b + a
}
a
b
end
mata
a=0
b=0

对于(i=1;我也许你可以详细说明你的问题。我的理解是,你想要两个变量的总和,这两个变量可以通过
gen var3=var1+var2
简单地实现(至于不使用
替换
你的原始变量进行修改).你打算对循环做什么?+1.这个问题不太清楚。不清楚你是否想处理变量名,以及在观察值之间求和。很抱歉不精确。我现在编辑了我的问题。希望你现在能帮助我。请发布你接受@Maarten Buis的答案的所有循环代码,以便理解其含义你从中得到了一些东西,这很好。作为访问该网站的其他用户的资源,这个问题在没有澄清的情况下几乎没有什么价值。