如何从R中的面板数据框中删除具有唯一ID的行?
我有一个包含数千家公司的数据表,这些公司可以通过一个唯一的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) <
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
进行筛选