如何关联两个不同的数据帧进行计算

时间:2018-05-10 14:24:36

标签: r database relational-database

我知道如何使用一个数据帧工作和计算数学/统计数据。但是,当我必须处理两个时会发生什么?例如:

> df1
   supervisor salesperson
1 Supervisor1        Matt
2 Supervisor2      Amelia
3 Supervisor2     Philip

> df2
  month   channel Matt Amelia Philip
1   Jan  Internet   10     50     20
2   Jan Cellphone   20     60     30
3   Feb  Internet   40     40     30
4   Feb Cellphone   30    120     40

如何以高效且通用的方式按渠道分组计算主管的销售额?当您需要关联两个或更多数据帧以计算所需数据时,是否有任何方法或标准?

PS:这个数字是每个销售人员的销售额。

1 个答案:

答案 0 :(得分:1)

以下是使用tidyverse

转换为long和合并的想法
library(tidyverse)

df2 %>% 
 gather(salesperson, val, -c(1:2)) %>% 
 left_join(., df1, by = 'salesperson') %>% 
 spread(salesperson, val, fill = 0) %>% 
 group_by(channel, supervisor) %>% 
 summarise_at(vars(names(.)[4:6]), funs(sum))

给出,

# A tibble: 4 x 5
# Groups:   channel [?]
  channel   supervisor  Amelia  Matt Philip
  <fct>     <fct>        <dbl> <dbl>  <dbl>
1 Cellphone Supervisor1     0.   50.     0.
2 Cellphone Supervisor2   180.    0.    70.
3 Internet  Supervisor1     0.   50.     0.
4 Internet  Supervisor2    90.    0.    50.

注意:您还可以在month

中添加group_by