我的数据集如下所示
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
我想我需要编写一个覆盖观察结果的循环。但我无法弄清楚能够实现这一目标的逻辑陈述。
答案 0 :(得分:1)
要么
gen x2 = sum(x1)
或
gen x2 = sum(x1 == 1)
就足够了。像往常一样,有一个循环观察默认,但你不需要一个明确的循环。
详细地说,sum()
这里是累计或运行总和。在您的情况下,第一个解决方案是简单和充分的。提到第二种解决方案的原因是因为它更通用:我们可以标记每个块中的第一个观察或用1拼写,然后创建一个运行总和以形成1s,2s等块。