在 R 中汇总数据
Summarize data in 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
这是一个非常大的数据集,我想生成一个摘要输出,为我提供 ITEM 明智的总销售额和存在该项目的商店数量。我尝试了以下方法,但这不起作用,因为我得到了一个商店计数,该计数由于数据集中的周重复而重复:
dataset %>% group_by(Store ID) %>% summarize(count(Item Code))
非常感谢任何帮助。
谢谢
您可以使用 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
这是一种使用 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
我有一个数据集,其中包含各商店每周销售的各种产品。数据如下所示:
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))
非常感谢任何帮助。 谢谢
您可以使用 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
这是一种使用 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