【问题标题】:Summarize data in R在 R 中汇总数据
【发布时间】:2017-10-26 13:50:34
【问题描述】:

我有一个数据集,其中包含各种产品的每周销售量。以下是数据的样子:

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

这是一个非常大的数据集,我想生成一个摘要输出,它为我提供了 ITEM 明智的总销售额和该项目所在的商店数量。我尝试了以下方法,但这不起作用,因为我得到了一个由于数据集中重复数周而重复的商店计数:

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

非常感谢任何帮助。 谢谢

【问题讨论】:

  • 你能把你的数据格式化成一个表格,这样更容易阅读它的样子吗?
  • 对不起@Adam,我的第一篇文章,我没有意识到我发布的格式会很糟糕!
  • dataset %>% group_by(ItemCode) %>% summarize(total.sales = sum(Sales), stores = n_distinct(StoreID))

标签: r dataframe count dplyr summarize


【解决方案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

【讨论】:

    【解决方案2】:

    您可以通过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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-14
      • 2021-10-13
      相关资源
      最近更新 更多