【问题标题】:Remove observation based on occurrence in panel data根据面板数据中的出现删除观察
【发布时间】:2021-08-06 05:43:32
【问题描述】:

我正在处理面板数据 我想保持对 id 的观察,即第一次 v_1=1 不是特定 id 的第一次。 stata中的排序命令类型 在示例中,我只想保留 61312 obs 而不是 42848

谢谢

dd <- read.table(text="
id      year    v_1  
61312   2015    0    
61312   2016    0    
61312   2017    1    
61312   2018    1       
42848   2016    1       
42848   2017    0", header=TRUE) 

【问题讨论】:

    标签: r panel-data


    【解决方案1】:

    您可以使用来自dplyrgroup_byfilter 来帮助完成这项任务

    library(dplyr)
    dd %>% 
      group_by(id) %>% 
      filter(first(v_1) != 1)
    

    我们使用group_by,所以当我们使用first() 时,它会查看每个id 的第一个值

    【讨论】:

    • 好的,谢谢,它似乎正在工作。 R 怎么知道按年份变量对其进行排序?
    • 数据已经按年份排序。如果不是这种情况,您可以在使用 arrange(year) 之前使用 filter()
    【解决方案2】:

    你可以使用 -

    subset(dd, id %in% unique(id)[v_1[!duplicated(id)] != 1])
    
    #     id year v_1
    #1 61312 2015   0
    #2 61312 2016   0
    #3 61312 2017   1
    #4 61312 2018   1
    

    v1[!duplicated(id)] 只保留每个id 的第一个v1 值,我们只选择第一个值不等于1 的id

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-27
      • 2021-02-03
      • 1970-01-01
      • 1970-01-01
      • 2014-06-18
      • 2019-04-17
      • 1970-01-01
      • 2013-03-12
      相关资源
      最近更新 更多