【问题标题】:Filtering out observations with wrong start date in panel data过滤掉面板数据中开始日期错误的观察
【发布时间】:2018-12-02 16:32:43
【问题描述】:

我正在使用 Stata 中的面板数据。

这是每年对公司进行询问的数据。我只想分析在特定年份(2010 年)首次受到质疑的公司的数据。我想删除所有未在 2010 年首次采访的公司的条目。数据格式如下:

idnum year
1     2010 
1     2011
1     2012
2     2009
2     2010
2     2011
3     2011
3     2012

因此,公司可能之前接受过采访,在这种情况下我想放弃它们,或者在稍后首次接受采访的情况下,我也想放弃它们。因此,在图片中的示例中,我只想保留第一家公司的条目(idnum =1)。

我尝试了以下方法:

by idnum, sort: drop if year<2010

但是,这只会删除 2010 年之前的条目,而不是所有在 2010 年之前被质疑的具有该 ID 的条目。

有人有什么想法吗?


编辑:

我觉得要走的路是获取 2010 年未接受采访的公司的所有 id 并放弃它们。然后从 2009 年或之前获取所有公司并删除它们。但我不知道如何在 Stata 中实现。

【问题讨论】:

    标签: variables filter panel stata


    【解决方案1】:

    以下适用于您的玩具示例:

    clear
    input idnum year
    1 2010
    1 2011
    1 2012
    2 2009
    2 2010
    2 2011
    2 2012
    3 2011
    3 2012
    end
    
    bysort idnum (year): generate tag = year[1] != 2010 
    
    list, sepby(idnum)
    
         +--------------------+
         | idnum   year   tag |
         |--------------------|
      1. |     1   2010     0 |
      2. |     1   2011     0 |
      3. |     1   2012     0 |
         |--------------------|
      4. |     2   2009     1 |
      5. |     2   2010     1 |
      6. |     2   2011     1 |
      7. |     2   2012     1 |
         |--------------------|
      8. |     3   2011     1 |
      9. |     3   2012     1 |
         +--------------------+
    

    drop if tag
    
    list
    
         +--------------------+
         | idnum   year   tag |
         |--------------------|
      1. |     1   2010     0 |
      2. |     1   2011     0 |
      3. |     1   2012     0 |
         +--------------------+
    

    或者在一行中:

    bysort idnum (year): drop if year[1] != 2010 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-01
      • 2019-04-25
      • 2018-08-19
      • 2019-11-10
      • 1970-01-01
      • 2020-08-03
      • 1970-01-01
      • 2021-08-18
      相关资源
      最近更新 更多