Проверьте, содержит ли диапазон конкретные значения - PullRequest
0 голосов
/ 03 июля 2018

Var1 дается. Var2 должно принимать значение 1, если Наблюдение или одно из предыдущих 5 наблюдений является пропущенным значением или 0. Каков Синтаксис для Var2?

Я знаю, как это сделать, используя множество if заявлений. Но когда мне нужно сделать это для предыдущих 50 наблюдений, это становится слишком неудобным.

* Example generated by -dataex-. To install: ssc install dataex
clear
input float(Var1 Var2)
5 0
. 1
2 1
5 1
7 1
9 1
5 1
9 0
0 1
2 1
7 1
5 1
3 1
2 1
5 0
end

1 Ответ

0 голосов
/ 03 июля 2018

Вопрос похож на ваш предыдущий - Находит второе наименьшее значение - которое вы должны процитировать. Так же и этот ответ. rangestat от SSC.

clear
input float(Var1 Var2)
5 0
. 1
2 1
5 1
7 1
9 1
5 1
9 0
0 1
2 1
7 1
5 1
3 1
2 1
5 0
end

gen long id = _n 
gen Bad = inlist(Var1, 0, .) 
rangestat (sum) Bad, int(id -5 0) 

list, sepby(Bad_sum)

     +----------------------------------+
     | Var1   Var2   id   Bad   Bad_sum |
     |----------------------------------|
  1. |    5      0    1     0         0 |
     |----------------------------------|
  2. |    .      1    2     1         1 |
  3. |    2      1    3     0         1 |
  4. |    5      1    4     0         1 |
  5. |    7      1    5     0         1 |
  6. |    9      1    6     0         1 |
  7. |    5      1    7     0         1 |
     |----------------------------------|
  8. |    9      0    8     0         0 |
     |----------------------------------|
  9. |    0      1    9     1         1 |
 10. |    2      1   10     0         1 |
 11. |    7      1   11     0         1 |
 12. |    5      1   12     0         1 |
 13. |    3      1   13     0         1 |
 14. |    2      1   14     0         1 |
     |----------------------------------|
 15. |    5      0   15     0         0 |
     +----------------------------------+
...