如何在Stata中为二进制数据创建尾随计数?

时间:2014-07-28 23:58:14

标签: stata

在Stata中,我目前拥有的数据集如下:

enter image description here

我正在尝试创建一个"尾随计数器"在B列中,它看起来像:

enter image description here

这里,计数器从1开始,每次a" 1"出现在A中,B加上一个值。

这似乎很简单,但我不确定如何准确地做到这一点。以下是我到目前为止所做的事情:

假设A列被称为" A"在Stata,

我用:

gen B = A + A[_n - 1]

但是,这给了我一些东西。我不知道该怎么办,有人会有任何提示吗?

1 个答案:

答案 0 :(得分:4)

这是一种方式:

clear all
set more off

*----- example data -----

input ///
var1
0
0
0
0
1
0
0
1
0
0
0
end

list, sep(0)

*----- what you want -----

gen counter = sum(var1) + 1

list, sep(0)

sum()函数将为您提供累积总和。见help sum()。这是一个非常基本的Stata功能。 search sum会让你快速到达那里。

您的方法失败,因为您只是为每次观察添加A的“当前”值以及其自身的先前值。那个可能听起来像是一个累积的总和,但想一想,你就会发现它不是。

使用您的代码和我的数据,结果将是:

     +----------------+
     | var1   counter |
     |----------------|
  1. |    0         . |
  2. |    0         0 |
  3. |    0         0 |
  4. |    0         0 |
  5. |    1         1 |
  6. |    0         1 |
  7. |    0         0 |
  8. |    1         1 |
  9. |    0         1 |
 10. |    0         0 |
 11. |    0         0 |
     +----------------+

缺少counter的第一个观察结果(.)。这是因为var1的第一次观察没有先前的值,因此Stata执行类似var1[1] + var1[0] = 0 + . = .的操作。

counter的第二个观察是var1[2] + var1[1] = 0 + 0 = 0

counter的第五个观察是var1[5] + var1[4] = 1 + 0 = 1

counter的第七个观察是var1[7] + var1[6] = 0 + 0 = 0。等等。