install.packages("dplyr")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.3'
## (as 'lib' is unspecified)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
install.packages("readxl")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.3'
## (as 'lib' is unspecified)
library(readxl)
bike_orderlines <- readRDS("bike_orderlines.rds")
unique(bike_orderlines$category_1)
## [1] "Mountain" "Road"
unique(bike_orderlines$category_2)
## [1] "Over Mountain" "Trail" "Elite Road"
## [4] "Endurance Road" "Sport" "Cross Country Race"
## [7] "Cyclocross" "Triathalon" "Fat Bike"
unique(bike_orderlines$frame_material)
## [1] "Carbon" "Aluminum"
primary_category_sales <- bike_orderlines %>%
group_by('Primary Category' = category_1) %>%
summarise(Sales = sum(total_price))
secondary_category_sales <- bike_orderlines %>%
group_by('Secondary Category' = category_2) %>%
summarise(Sales = sum(total_price))
frame_material_sales <- bike_orderlines %>%
group_by('Frame Material' = frame_material) %>%
summarise(Sales = sum(total_price))
primary_max_sales <- primary_category_sales %>%
filter(Sales == max(Sales))
secondary_max_sales <- secondary_category_sales %>%
filter(Sales == max(Sales))
frame_material_max_sales <- frame_material_sales %>%
filter(Sales == max(Sales))
primary_max_sales
## # A tibble: 1 × 2
## `Primary Category` Sales
## <chr> <dbl>
## 1 Mountain 39154735
secondary_max_sales
## # A tibble: 1 × 2
## `Secondary Category` Sales
## <chr> <dbl>
## 1 Cross Country Race 19224630
frame_material_max_sales
## # A tibble: 1 × 2
## `Frame Material` Sales
## <chr> <dbl>
## 1 Carbon 52940540
combinations_summary <- bike_orderlines %>%
group_by('Primary Category' = category_1, 'Secondary Category' = category_2) %>%
summarise(Aluminum = sum(ifelse(frame_material == 'Aluminum', total_price, 0)),
Carbon = sum(ifelse(frame_material == 'Carbon', total_price, 0)),
'Total Sales' = sum(total_price))
## `summarise()` has grouped output by 'Primary Category'. You can override using
## the `.groups` argument.
combinations_summary <- combinations_summary %>%
mutate(Contains_Aluminum_and_Carbon = Aluminum > 0 & Carbon > 0)
combinations_summary
## # A tibble: 9 × 6
## # Groups: Primary Category [2]
## `Primary Category` `Secondary Category` Aluminum Carbon `Total Sales`
## <chr> <chr> <dbl> <dbl> <dbl>
## 1 Mountain Cross Country Race 3318560 15906070 19224630
## 2 Mountain Fat Bike 1052620 0 1052620
## 3 Mountain Over Mountain 0 7571270 7571270
## 4 Mountain Sport 1932755 0 1932755
## 5 Mountain Trail 4537610 4835850 9373460
## 6 Road Cyclocross 0 2108120 2108120
## 7 Road Elite Road 5637795 9696870 15334665
## 8 Road Endurance Road 1612450 8768610 10381060
## 9 Road Triathalon 0 4053750 4053750
## # ℹ 1 more variable: Contains_Aluminum_and_Carbon <lgl>