我有这样的数据框:
Date Trade.Name SKU Sales.in.USD Sum.Units Sales.in.Loc.currency
1 01.03.2010 Brand1 Brand1 CAPS 32 37994.9 4135.5 1123107.3
2 01.03.2010 Brand1 Brand1 CAPS 16 37918.5 5752.7 1167896.0
3 01.03.2010 Brand1 Brand1 CAPS 48 37875.0 2888.9 1245879.5
4 01.04.2010 Brand1 Brand1 CAPS 16 37192.4 6427.6 1099386.2
5 01.04.2010 Brand1 Brand1 CAPS 16 36591.8 5536.0 1073304.0
6 01.03.2010 Brand2 Brand2 CAPS 28 6.4 0.7 207.4
7 01.03.2010 Brand2 Brand2 CAPS 28 6.4 0.7 226.5
8 01.04.2010 Brand2 Brand2 CAPS 28 6.3 0.6 195.4
9 01.04.2010 Brand2 Brand2 CAPS 28 6.3 0.6 196.1
我希望通过SKU
聚合它并获得如下数据框:
Date Trade.Name Sales.in.USD Sum.Units Sales.in.Loc.currency
1 01.03.2010 Brand1 113788.39180 113788.39180 113788.39180
2 01.04.2010 Brand1 73784.26045 73784.26045 73784.26045
3 01.03.2010 Brand2 12.71363 12.71363 12.71363
4 01.04.2010 Brand2 12.59949 12.59949 12.59949
我知道我可以使用dplyr
套餐,但我不知道如何按多个标准对其进行汇总:Date
和SKU
答案 0 :(得分:2)
http://cran.rstudio.com/web/packages/dplyr/vignettes/introduction.html
在下文中,我假设您的数据框名为df。
require(dplyr)
df <- group_by(df, Date, SKU)
df.summary <- summarise(df,
sales = sum(Sales.in.USD),
units = sum(Sum.Units),
curr = sum(Sales.in.Loc.currency)
)
我认为这样做会有所帮助。
答案 1 :(得分:2)
由于您没有明确说明这必须是dplyr
解决方案,因此这是一个data.table
解决方案,速度很快
我也是,不要提供您的数据,因为您似乎在Date
和SKU
之间有六个独特的组合,您希望的输出只显示四个。看来达到所需输出的唯一方法是使用Trade.Name
列,所以这里是
library(data.table)
setDT(temp)[, lapply(.SD, sum), by = list(Date, Trade.Name), .SDcols = -c("SKU")]
结果是
## Date Trade.Name Sales.in.USD Sum.Units Sales.in.Loc.currency
## 1: 01.03.2010 Brand1Brand1CAPS 113788.4 12777.1 3536882.8
## 2: 01.04.2010 Brand1Brand1CAPS 73784.2 11963.6 2172690.2
## 3: 01.03.2010 Brand2Brand2CAPS 12.8 1.4 433.9
## 4: 01.04.2010 Brand2Brand2CAPS 12.6 1.2 391.5