Pergunta

No Stata, atualmente tenho um conjunto de dados parecido com:

enter image description here

Estou tentando criar um "contador final" na coluna B para que fique assim:

enter image description here

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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top