如何计算跨多个数据帧的值的出现

时间:2019-07-03 13:13:33

标签: r

我有一些看起来像这样的数据框:

df1 <- data.frame(Id=c(1,2,3,4),a=c(66,64,54,65)) 
df2 <- data.frame(Id=c(2,7,4,6),a=c(70,74,71,54))
df3 <- data.frame(Id=c(9,11,1,2),a=c(67,53,55,73))

df1

  Id  a
1  1 66
2  2 64
3  3 54
4  4 65

df2
  Id  a
1  2 70
2  7 74
3  4 71
4  6 54

df3
   Id  a
 1  9 67
 2 11 53
 3  1 55
 4  2 73

我想知道什么代码可以让我计算出所有三个数据帧中每个ID值的出现。

我的理想输出如下:

 ID  Count
  1    2
  2    3
  3    1
  4    2
  7    1
  6    1
  9    1
  11   1

2 个答案:

答案 0 :(得分:2)

rbind并用aggregate

计数
aggregate(a~Id, rbind(df1, df2, df3), length)

#  Id a
#1  1 2
#2  2 3
#3  3 1
#4  4 2
#5  6 1
#6  7 1
#7  9 1
#8 11 1

或与dplyr

library(dplyr)
bind_rows(df1, df2, df3) %>%  count(Id)

答案 1 :(得分:1)

我们可以使用rbindlist

library(data.table)
rbindlist(mget(paste0("df", 1:3)))[, .N, Id]\
#   Id N
#1:  1 2
#2:  2 3
#3:  3 1
#4:  4 2
#5:  7 1
#6:  6 1
#7:  9 1
#8: 11 1