¿Cómo puedo crear un recuento final para datos binarios en Stata?
-
20-12-2019 - |
Pregunta
En Stata, actualmente tengo un conjunto de datos que se parece a:
Estoy intentando crear un "contador final" en la columna B para que se vea así:
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?
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.