Stata:循环观察

时间:2015-01-14 14:42:48

标签: stata

我的数据集如下所示

x1
1  
0
0
1
0
0
1
1

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

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

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

1 个答案:

答案 0 :(得分:1)

要么

gen x2 = sum(x1) 

gen x2 = sum(x1 == 1) 

就足够了。像往常一样,有一个循环观察默认,但你不需要一个明确的循环。

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