Comment puis-je créer un décompte final pour les données binaires dans Stata ?

StackOverflow https://stackoverflow.com//questions/25006193

  •  20-12-2019
  •  | 
  •  

Question

Dans Stata, j'ai actuellement un ensemble de données qui ressemble à :

enter image description here

J'essaie de créer un "compteur final" dans la colonne B pour qu'il ressemble à :

enter image description here

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 ?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top