Как я могу создать конечный счет для двоичных данных в Stata?
-
20-12-2019 - |
Вопрос
в Stata, у меня в настоящее время есть набор данных, который выглядит как:
Я пытаюсь создать «задний счетчик» в столбце B, чтобы он выглядел:
Здесь счетчик начинается в 1, и каждый раз, когда в A «1» появляется в A, B добавляет значение.
Это, кажется, очень просто, но я не уверен, как это сделать именно.Вот что я сделал до сих пор:
Предполагая, что столбец A называется «A» в Stata,
Я использую:
gen B = A + A[_n - 1]
.
Но это что-то дает мне что-то.Я не уверен, как действовать, у кого-нибудь есть какие-либо советы?
Решение
Вот один из способов:
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)
.
Функция sum()
даст вам совокупную сумму. Смотрите help sum()
. Это очень базовая функция Stata. Генеракодицетагкод быстровал бы вас там быстро.
Ваш подход не удается, потому что вы добавляете только для каждого наблюдения, «тока» значение search sum
с предыдущим значением самого значения. Что может звучать как совокупную сумму, но подумайте об этом, и вы увидите, что это не так.
с вашим кодом и моими данными, результат будет:
+----------------+
| 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
отсутствует (counter
). Это потому, что нет предыдущего значения для первого наблюдения в .
, поэтому Stata делает что-то вроде генеракодицетагкода.
Второе наблюдение за генеракодицетагкодом является генеракодицетагкод.
Пятое наблюдение за генеракодицетагкодом является генеракодицетагкод.
Седьмое наблюдение за генеракодицетагкод - генеракодицетагкод. И так далее.