如果事件发生则更新 运行 列表

Updating running list if event happens

示例数据:

clear

* Input data

input student CITATION EXPELLED hadCITATION hadEXPELLED
1 0 0 0 0
1 0 0 0 0
1 0 0 0 0
1 0 0 0 0
1 0 0 0 0
2 0 0 0 0
2 0 0 0 0
2 1 0 1 0
2 1 0 1 0
2 0 0 1 0
3 1 0 1 0
3 0 1 1 1
3 1 1 1 1
3 1 0 1 1
3 1 0 1 1
4 . . . .
4 . 0 . 0
4 0 0 0 0
4 0 1 0 1
4 1 0 1 0

我想创建这些 hadCITATION 和 hadEXPELLED 变量列,它们根据 CITATION 和 EXPELLED 的响应进行更新。

这可能会有所帮助。如果没有时间或序列变量,我看不出这是有意义的。我的猜测是,一旦你有过 CITATION 或 EXPULSION,那就是你的历史。规则可能更复杂,但我看不出你在解释它们。 我看不出你举学生 4 的例子的理由。

clear 
input student CITATION EXPELLED hadCITATION hadEXPELLED
1 0 0 0 0
1 0 0 0 0
1 0 0 0 0
1 0 0 0 0
1 0 0 0 0
2 0 0 0 0
2 0 0 0 0
2 1 0 1 0
2 1 0 1 0
2 0 0 1 0
3 1 0 1 0
3 0 1 1 1
3 1 1 1 1
3 1 0 1 1
3 1 0 1 1
4 . . . .
4 . 0 . 0
4 0 0 0 0
4 0 1 0 1
4 1 0 1 0
end 

gen long time = _n 

bysort student (time) : gen want1 = sum(CITATION) > 0 

by student: gen want2 = sum(EXPELLED) > 0 

list student CIT EXP hadCIT hadEXP want?, sepby(student) 

    +---------------------------------------------------------------------+
     | student   CITATION   EXPELLED   hadCIT~N   hadEXP~D   want1   want2 |
     |---------------------------------------------------------------------|
  1. |       1          0          0          0          0       0       0 |
  2. |       1          0          0          0          0       0       0 |
  3. |       1          0          0          0          0       0       0 |
  4. |       1          0          0          0          0       0       0 |
  5. |       1          0          0          0          0       0       0 |
     |---------------------------------------------------------------------|
  6. |       2          0          0          0          0       0       0 |
  7. |       2          0          0          0          0       0       0 |
  8. |       2          1          0          1          0       1       0 |
  9. |       2          1          0          1          0       1       0 |
 10. |       2          0          0          1          0       1       0 |
     |---------------------------------------------------------------------|
 11. |       3          1          0          1          0       1       0 |
 12. |       3          0          1          1          1       1       1 |
 13. |       3          1          1          1          1       1       1 |
 14. |       3          1          0          1          1       1       1 |
 15. |       3          1          0          1          1       1       1 |
     |---------------------------------------------------------------------|
 16. |       4          .          .          .          .       0       0 |
 17. |       4          .          0          .          0       0       0 |
 18. |       4          0          0          0          0       0       0 |
 19. |       4          0          1          0          1       0       1 |
 20. |       4          1          0          1          0       1       1 |
     +---------------------------------------------------------------------+