Comment puis-je créer un décompte final pour les données binaires dans Stata ?
-
20-12-2019 - |
Question
Dans Stata, j'ai actuellement un ensemble de données qui ressemble à :
J'essaie de créer un "compteur final" dans la colonne B pour qu'il ressemble à :
Ici, le compteur démarre à 1 et à chaque fois qu'un "1" apparaît dans A, B ajoute une valeur.
Cela semble très simple, mais je ne sais pas comment procéder exactement.Voici ce que j'ai fait jusqu'à présent :
En supposant que la colonne A s'appelle "A" dans Stata,
J'utilise:
gen B = A + A[_n - 1]
Mais cela me donne quelque chose.Je ne sais pas comment procéder, quelqu'un aurait-il des conseils ?
La solution
Voici une façon :
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)
Le sum()
La fonction vous donnera une somme cumulée.Voir help sum()
.Il s'agit d'une fonction Stata très basique.UN search sum
vous y aurait amené rapidement.
Votre approche échoue car vous additionnez seulement, pour chaque observation, la valeur « actuelle » de A
avec la valeur précédente de lui-même.Que pourrait sembler comme une somme cumulée, mais réfléchissez-y et vous verrez que ce n'est pas le cas.
Avec votre code et mes données, le résultat serait :
+----------------+
| 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 première observation pour counter
est manquant (.
).C'est parce qu'il n'y a pas de valeur précédente pour la première observation de var1
, donc Stata fait quelque chose comme var1[1] + var1[0] = 0 + . = .
.
La deuxième observation pour counter
est var1[2] + var1[1] = 0 + 0 = 0
.
La cinquième observation pour counter
est var1[5] + var1[4] = 1 + 0 = 1
.
La septième observation pour counter
est var1[7] + var1[6] = 0 + 0 = 0
.Et ainsi de suite.