我有一些看起来像这样的数据框:
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
答案 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