Pregunta

En Stata, actualmente tengo un conjunto de datos que se parece a:

enter image description here

Estoy intentando crear un "contador final" en la columna B para que se vea así:

enter image description here

Aquí, el contador comienza en 1 y cada vez que aparece un "1" en A, B suma un valor.

Esto parece muy simple, pero no estoy seguro de cómo hacerlo exactamente.Esto es lo que he hecho hasta ahora:

Suponiendo que la columna A se llama "A" en Stata,

Yo suelo:

gen B = A + A[_n - 1]

Pero esto me da algo.No estoy seguro de cómo proceder, ¿alguien tendría algún consejo?

¿Fue útil?

Solución

Aquí hay una forma:

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)

El sum() La función le dará una suma acumulativa.Ver help sum().Esta es una función de Stata muy básica.A search sum te habría llevado allí rápidamente.

Su enfoque falla porque sólo está sumando, para cada observación, el valor "actual" de A con el valor anterior de sí mismo.Eso puede sonar como una suma acumulativa, pero piénsalo y verás que no lo es.

Con tu código y mis datos, el resultado serí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 |
     +----------------+

La primera observación para counter Está perdido (.).Esto se debe a que no existe un valor previo para la primera observación de var1, entonces Stata hace algo como var1[1] + var1[0] = 0 + . = ..

La segunda observación para counter es var1[2] + var1[1] = 0 + 0 = 0.

La quinta observación para counter es var1[5] + var1[4] = 1 + 0 = 1.

La séptima observación para counter es var1[7] + var1[6] = 0 + 0 = 0.Etcétera.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top