【问题标题】:How to count occurrence of a value across multiple data frames [duplicate]如何计算多个数据帧中值的出现次数[重复]
【发布时间】:2019-07-03 13:13:33
【问题描述】:

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

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

【问题讨论】:

  • 使用表:table(unlist(lapply(list(df1, df2, df3), "[", 1)))

标签: r


【解决方案1】:

rbindaggregate 一起计数

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)

【讨论】:

    【解决方案2】:

    我们可以使用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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-25
      • 1970-01-01
      • 2020-08-17
      • 1970-01-01
      相关资源
      最近更新 更多