在Stata中添加观测值

时间:2020-06-22 10:32:55

标签: database stata

我的数据库的基础是暴力事件。我知道这些事件发生在哪个网格单元以及何时发生。对于我的分析,我将某个网格,国家和年份的暴力事件发生频率作为因变量。要创建此频率变量,我collapse我的暴力事件数据库并计算特定年份中某个网格中暴力事件的数量。

如果在特定年份的某个网格单元中没有暴力事件,我想将值包括为0。但是,由于我基于暴力事件数据库,因此collapse我的数据时没有这些观察结果。有没有办法为没有暴力事件的年份和网格单元中的观测值创建0值?

在我collapse日期集之前,它看起来像这样

+--------------------------+
|Country Year Grid_cell_id |
|--------------------------|
|Benin    2012    365      |
|Benin    2012    365      |
|Benin    2012    367      |
|Benin    2014    365      |
|Benin    2014    365      |
|Benin    2014    365      | 
|Benin    2015    240      |
|Benin    2015    240      |
|Kenya    2012    430      |
|Kenya    2012    430      |
|Kenya    2013    467      |
|Kenya    2014    567      |
|Kenya    2014    567      |
|Kenya    2014    567      | 
+--------------------------+

一旦我collapse我的数据集,它就会像这样:

+---------------------------------+
|Country  Year Grid_cell_id freq  |
|---------------------------------|
|Benin    2012    365        2    |
|Benin    2012    367        1    |
|Benin    2014    365        3    |
|Benin    2015    240        2    |
|Kenya    2012    430        2    |
|Kenya    2013    467        1    |
|Kenya    2014    567        3    |
+---------------------------------+

当我使用fillin创建0频率值时,我仅使用我仅使用grid-cell_id和year,但是我还需要有关grid-cell所在国家/地区的信息。我可以使用fillin函数轻松进入下面的数据集,但是如何保留国家值而不将其用作fillin标准。

+---------------------------------+
|Country  Year Grid_cell_id freq  |
|---------------------------------|
|Benin    2012    365        2    |
|.        2013    365        0    |
|.        2014    365        3    |
|.        2015    365        0    |
|Benin    2012    367        1    |
|.        2012    367        0    |
|.        2013    367        0    |
|.        2014    367        0    |
|.        2015    367        0    |
+---------------------------------+

1 个答案:

答案 0 :(得分:0)

在这里,我创建提到的问题,然后使用fillin解决。参见help fillinthis paper

在这种特定情况下,使用zero的{​​{1}}选项可以完全避免该问题。实际上,获取频率contract的数据集通常要优于contract

collapse

编辑

您似乎忽略了使用 sysuse auto, clear (1978 Automobile Data) . contract foreign rep78 . list, sepby(foreign) +--------------------------+ | rep78 foreign _freq | |--------------------------| 1. | 1 Domestic 2 | 2. | 2 Domestic 8 | 3. | 3 Domestic 27 | 4. | 4 Domestic 9 | 5. | 5 Domestic 2 | 6. | . Domestic 4 | |--------------------------| 7. | 3 Foreign 3 | 8. | 4 Foreign 9 | 9. | 5 Foreign 9 | 10. | . Foreign 1 | +--------------------------+ . fillin foreign rep78 . list, sepby(foreign) +------------------------------------+ | rep78 foreign _freq _fillin | |------------------------------------| 1. | 1 Domestic 2 0 | 2. | 2 Domestic 8 0 | 3. | 3 Domestic 27 0 | 4. | 4 Domestic 9 0 | 5. | 5 Domestic 2 0 | 6. | . Domestic 4 0 | |------------------------------------| 7. | 1 Foreign . 1 | 8. | 2 Foreign . 1 | 9. | 3 Foreign 3 0 | 10. | 4 Foreign 9 0 | 11. | 5 Foreign 9 0 | 12. | . Foreign 1 0 | +------------------------------------+ . replace _freq = 0 if _fillin (2 real changes made) . drop _fillin . list, sepby(foreign) +--------------------------+ | rep78 foreign _freq | |--------------------------| 1. | 1 Domestic 2 | 2. | 2 Domestic 8 | 3. | 3 Domestic 27 | 4. | 4 Domestic 9 | 5. | 5 Domestic 2 | 6. | . Domestic 4 | |--------------------------| 7. | 1 Foreign 0 | 8. | 2 Foreign 0 | 9. | 3 Foreign 3 | 10. | 4 Foreign 9 | 11. | 5 Foreign 9 | 12. | . Foreign 1 | +--------------------------+ 的建议,该建议会自动添加频率为零的观测值。

否则,请注意Stata标签Wiki中有关显示数据示例的详细建议,并考虑使用contract, zero组合标识符和年份的这种变化。对于任何长期数据集,假设网格单元仍在同一国家/地区,而这不是假定,则是不明智的。

egen