Como posso criar uma contagem final para dados binários no Stata?
-
20-12-2019 - |
Pergunta
No Stata, atualmente tenho um conjunto de dados parecido com:
Estou tentando criar um "contador final" na coluna B para que fique assim:
Aqui, o contador começa em 1 e cada vez que um “1” aparece em A, B adiciona um valor.
Isso parece ser muito simples, mas não tenho certeza de como fazer isso exatamente.Aqui está o que fiz até agora:
Supondo que a coluna A seja chamada de "A" no Stata,
Eu uso:
gen B = A + A[_n - 1]
Mas isso me dá algo estranho.Não sei como proceder, alguém teria alguma dica?
Solução
Aqui está uma maneira:
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)
O sum()
função lhe dará uma soma cumulativa.Ver help sum()
.Esta é uma função Stata muito básica.A search sum
teria levado você lá rapidamente.
Sua abordagem falha porque você está apenas somando, para cada observação, o valor “atual” de A
com o valor anterior de si mesmo.Que pode soar como uma soma cumulativa, mas pense nisso e verá que não é.
Com seu código e meus dados, o resultado seria:
+----------------+
| 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 |
+----------------+
A primeira observação para counter
está desaparecido (.
).Isso ocorre porque não há valor anterior para a primeira observação de var1
, então Stata faz algo como var1[1] + var1[0] = 0 + . = .
.
A segunda observação para counter
é var1[2] + var1[1] = 0 + 0 = 0
.
A quinta observação para counter
é var1[5] + var1[4] = 1 + 0 = 1
.
A sétima observação para counter
é var1[7] + var1[6] = 0 + 0 = 0
.E assim por diante.