Stata:循环观察

Stata: looping over observations

我的数据集是这样的

x1
1  
0
0
1
0
0
1
1

在这个数据集中,1后面的值属于同一组。例如,前 2 个零属于第 1 组,后 2 个零属于第 2 组,依此类推。我想得到与此类似的最终输出。请注意,两个 1 之间的增量是任意的:

x1 x2
1  1
0  1
0  1
1  2
0  2
0  2
1  3
1  4

我想我需要编写一个遍历观察结果的循环。但我无法弄清楚将实现这一目标的逻辑陈述。

或者

gen x2 = sum(x1) 

gen x2 = sum(x1 == 1) 

足够了。那里有一个默认的观察循环,但您不需要显式循环。

详细来说,sum()这里是一个累加或者运行总和。在您的情况下,第一个解决方案简单且足够。提到第二个解决方案的原因是因为它更通用:我们可以用 1 标记每个块或拼写中的第一个观察结果,然后创建一个 运行 总和以形成 1、2 等块。