2017-05-25 117 views
1

我有一个数据集,其中包含按出口每周销售各种产品的数据集。下面是数据看起来的样子:在R中汇总数据

Store ID Week ID Item Code Sales in $ 
253422 191 41130 2.95 
272568 188 41130 2.95 
272568 188 41160 2.95 
272568 189 41130 2.95 
272568 189 41160 2.95 
272568 190 41160 2.95 
217460 188 41110 2.95 
217460 188 41130 5.9 
217460 188 41160 5.9 
217460 189 41110 11.8 
217460 189 41130 8.85 
217460 189 41160 11.8 
217460 191 41130 5.95 
217460 191 41160 8.93 

这是一个非常大的数据集,我想生成一个摘要输出这使我的项目明智总销售额中,该项目是目前的门店数量。我尝试以下,但是,这并不工作,因为我得到了门店数量这是由于数据集中的重复周的重复:

dataset %>% group_by(Store ID) %>% summarize(count(Item Code)) 

任何帮助,高度赞赏。 感谢

+0

可以格式化你的数据到一个表,使其更容易一点看它是什么样子? – Adam

+0

对不起@亚当,我的第一篇文章,我没有意识到格式将是我发布的方式可怕! – Rnovice

+0

https://stackoverflow.com/questions/1660124/how-to-sum-a-variable-by-group – Adam

回答

0

您可以aggregate

## Recreate your data 
df = read.table(text="'Store ID' 'Week ID' 'Item Code' 'Sales in Dollars' 
253422 191 41130 2.95 
272568 188 41130 2.95 
272568 188 41160 2.95 
272568 189 41130 2.95 
272568 189 41160 2.95 
272568 190 41160 2.95 
217460 188 41110 2.95 
217460 188 41130 5.9 
217460 188 41160 5.9 
217460 189 41110 11.8 
217460 189 41130 8.85 
217460 189 41160 11.8 
217460 191 41130 5.95 
217460 191 41160 8.93", 
header=TRUE) 

aggregate(df$Sales.in.Dollars, list(df$Item.Code), sum) 
Group.1  x 
1 41110 14.75 
2 41130 29.55 
3 41160 35.48 
StoreItems = unique(df[,c(1,3)]) 
aggregate(StoreItems$Store.ID, list(StoreItems$Item.Code), length) 
Group.1 x 
1 41110 1 
2 41130 3 
3 41160 2 
+0

Thanks @ G5W!这对我有用! – Rnovice

1

做到这一点这里有一个办法做到这一点使用dplyr


library(dplyr) 

df <- tibble::tribble(
    ~store_id, ~week_id, ~item_code, ~sales, 
    253422L,  191L,  41130L, 2.95, 
    272568L,  188L,  41130L, 2.95, 
    272568L,  188L,  41160L, 2.95, 
    272568L,  189L,  41130L, 2.95, 
    272568L,  189L,  41160L, 2.95, 
    272568L,  190L,  41160L, 2.95, 
    217460L,  188L,  41110L, 2.95, 
    217460L,  188L,  41130L, 5.9, 
    217460L,  188L,  41160L, 5.9, 
    217460L,  189L,  41110L, 11.8, 
    217460L,  189L,  41130L, 8.85, 
    217460L,  189L,  41160L, 11.8, 
    217460L,  191L,  41130L, 5.95, 
    217460L,  191L,  41160L, 8.93 
) 

df %>% 
    group_by(item_code) %>% 
    summarise(total_sales = sum(sales), 
      stores = n_distinct(store_id)) 

#> # A tibble: 3 x 3 
#> item_code total_sales stores 
#>  <int>  <dbl> <int> 
#> 1  41110  14.75  1 
#> 2  41130  29.55  3 
#> 3  41160  35.48  2