我正在处理一个使用RODBC从数据库中提取的大型数据集。我想要做的是以更易于管理的方式聚合这些数据。到目前为止,我有一个df
看起来像这样:
head(commercials)
ReportPeriod Year Customer CustomerNumber TradingGroup ItemCode ItemDesc Vol
1 2018-01 2018 Ted's Bar 1234 Ted's PLC 1 Packing 50
2 2018-01 2018 Ted's Res 4567 Ted's PLC 1 Packing 100
3 2018-02 2018 Ted's Bar 1234 Ted's PLC 1 Packing 60
4 2018-02 2018 Ted's Res 4567 Ted's PLC 1 Packing 120
上述字段中还有其他变量与我不感兴趣的其他项目和客户信息以及我的销售价值,购买价值和毛利等变量相关。
我想删除所有我不感兴趣的变量,并按TradingGroup
汇总所有数据,这样我就可以看到TradingGroup的所有销售额的总和,而不是单个客户。因此,第二个df
按TradingGroup
变量的不同值分组。我希望能够从第一个df
中汇总所有价值,销售价值等值,并将它们追加到第二个df的末尾
head(CTG)
TradingGroup Channel ItemCode ItemDes Vol
1 Ted's PLC Hospitality 1 Packing ?
我以为我可以使用某种left_join()来执行此操作,如下所示:
CTGcommercials<-left_join(CTG,commercials)%>%group_by(TradingGroup,Channel,ItemCode,ItemDesc)%>%
summarize(sum=n())
这种方法肯定有效,因为我在类似场景中使用计数尝试了这种方法,但是附加到第二个df末尾的列并不是我所期望的。 vol列中的值应聚合为一行:
50 + 100 + 60 + 120 = 330
有什么想法吗?
答案 0 :(得分:2)
这是使用tidyverse的一种方式
library(tidyverse)
commercial %>% select(TradingGroup, Vol) %>%
group_by(TradingGroup) %>% summarize(vol = sum(vol)) %>%
left_join(CTG, ., by = "TradingGroup")