用2个数据帧计算

时间:2018-02-21 15:37:25

标签: r

我有2个表,每个表有2列:

ID     Topic  
123     A  
124     B  
125     A  
126     C    

和:

ID     Freq  
123     20  
124     30   
125     10  
123     50  

结果应该是每个具有相关freq总和的主题,如下所示:

Topic   Total  
  A      80  
  B      30  
  C       0  

我如何用R(使用RStudio)得到这个,表格真的很长~50k行

2 个答案:

答案 0 :(得分:1)

在基地R:

df3 <- merge(df1,df2,all.x=TRUE)
df3[is.na(df3)] <- 0
aggregate(Freq ~ Topic,df3,sum)
#   Topic Freq
# 1     A   80
# 2     B   30
# 3     C    0

数据

df1 <- read.table(text="ID     Topic  
123     A  
124     B  
125     A  
126     C",h=T,strin=F)    

df2 <- read.table(text="ID     Freq  
123     20  
124     30   
125     10  
123     50",h=T,strin=F)  

答案 1 :(得分:1)

tidyverse方法:

library(dplyr)
df1 %>%
  left_join(df2, by = "ID") %>%
  group_by(Topic) %>%
  summarize(Total = sum(Freq, na.rm = TRUE))