【问题标题】:Stata: looping over observationsStata:循环观察
【发布时间】:2015-01-14 23:24:08
【问题描述】:

我的数据集是这样的

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

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

【问题讨论】:

    标签: stata


    【解决方案1】:

    要么

    gen x2 = sum(x1) 
    

    gen x2 = sum(x1 == 1) 
    

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

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

    【讨论】:

      猜你喜欢
      • 2018-01-29
      • 2021-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多