我知道如何使用一个数据帧工作和计算数学/统计数据。但是,当我必须处理两个时会发生什么?例如:
> 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:这个数字是每个销售人员的销售额。
答案 0 :(得分:1)
以下是使用tidyverse
,
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