如何从R中的面板数据框中删除具有唯一ID的行?

如何从R中的面板数据框中删除具有唯一ID的行?,r,formatting,panel-data,rowdeleting,R,Formatting,Panel Data,Rowdeleting,我有一个包含数千家公司的数据表,这些公司可以通过一个唯一的ID来识别。这是一个长格式的数据,每个公司应该在不同的年份出现两次(两年的横截面时间序列) 然而,并不是所有的公司都在这两个年份出现,我正试图创建一个平衡的长格式小组,其中只有在这两个年份出现的公司仍然存在。我如何做到这一点 这是一个示例数据表,用于说明该问题: example <- matrix(c(1,1,2,3,3,2013,2016,2013,2013,2016), ncol=2) colnames(example) <

我有一个包含数千家公司的数据表,这些公司可以通过一个唯一的ID来识别。这是一个长格式的数据,每个公司应该在不同的年份出现两次(两年的横截面时间序列)

然而,并不是所有的公司都在这两个年份出现,我正试图创建一个平衡的长格式小组,其中只有在这两个年份出现的公司仍然存在。我如何做到这一点

这是一个示例数据表,用于说明该问题:

example <- matrix(c(1,1,2,3,3,2013,2016,2013,2013,2016), ncol=2)
colnames(example) <- c('id', 'year')
example.table <- data.table(example)
example.table

   id year
1:  1 2013
2:  1 2016
3:  2 2013
4:  3 2013
5:  3 2016

示例我们从整个数据集中创建一个
唯一的
'year'向量,然后检查
所有
在'nm1'中的值是否在%
%中
按'id'分组的'year'中,并对数据表进行子集划分

un1 <- unique(example.table$year)
example.table[, .SD[all(un1 %in% year)], id]
#   id year
#1:  1 2013
#2:  1 2016
#3:  3 2013
#4:  3 2016

un1使用
dplyr
如下:

library(dplyr)
example.table %>%
  group_by(id) %>%
  filter(n() > 1)
# A tibble: 4 x 2
# Groups:   id [2]
     id  year
  <dbl> <dbl>
1     1  2013
2     1  2016
3     3  2013
4     3  2016
库(dplyr)
示例.表格%>%
分组依据(id)%>%
过滤器(n()>1)
#一个tibble:4x2
#组别:id[2]
身份证年份
1     1  2013
2     1  2016
3     3  2013
4     3  2016

数据。表
与@Sonny的
dplyr
解决方案等效的解决方案

example.table[, if(.N > 1) .SD, id]

   id year
1:  1 2013
2:  1 2016
3:  3 2013
4:  3 2016

那太棒了,我没想到除了
mutate
summary
之外,你还可以使用
groupby
进行
筛选