Loading all of the libraries

library(completejourney)
library(tidyverse)
library(dplyr)
library(ggplot2)
library(naniar)
library(lubridate)

Merging data

transactions <- get_transactions() %>%
  inner_join(products) %>%
  inner_join(demographics)

First graph

transactions %>%
  filter(str_detect(product_category, regex("fruit", ignore_case = TRUE))) %>%
  group_by(product_category, age) %>%
  summarize(total_sales = sum(sales_value)) %>%
  ggplot(aes(x = product_category, y = total_sales)) +
  geom_col(fill = "orange") +
  facet_wrap(~age, nrow = 2, ncol = 3) +
  coord_flip() +
  ggtitle("Type and Amount of Fruit Purchased by Age Group") +
  scale_y_continuous(name = "Sales", labels = scales::dollar) +
  scale_x_discrete(name = "Fruits Product Category")
`summarise()` has grouped output by 'product_category'. You can override using the `.groups` argument.

Second graph

transactions %>%
  filter(str_detect(product_category, regex("fruit", ignore_case = TRUE))) %>%
  group_by(age, Month = month(transaction_timestamp, label = TRUE)) %>%
  summarize(total_sales = sum(sales_value)) %>%
  ggplot(aes(x = Month, y = total_sales)) +
  geom_col(fill = "purple") +
  facet_wrap(~age, nrow = 3, ncol = 2) +
  ggtitle("Fruit Purchases by Age Group Throughout the Year") +
  scale_y_continuous(name = "Sales", labels = scales::dollar) +
  scale_x_discrete(name = "Month")
`summarise()` has grouped output by 'age'. You can override using the `.groups` argument.

Third graph

transactions %>%
  filter(str_detect(product_category, regex("fruit", ignore_case = TRUE))) %>%
  group_by(product_category, age, household_comp) %>%
  summarize(total_sales = sum(sales_value)) %>%
  ggplot(aes(x = household_comp, y = total_sales)) +
  geom_col(fill = "green") +
  coord_flip() +
  facet_wrap(~age, nrow = 2, ncol = 3) +
  ggtitle("Fruit Purchases by Age Group and Household Composition") +
  scale_y_continuous(name = "Sales", labels = scales::dollar) +
  scale_x_discrete(name = "Household Composition")
`summarise()` has grouped output by 'product_category', 'age'. You can override using the `.groups` argument.

LS0tDQp0aXRsZTogIldlZWtfNV9sYWJfYmx1bnRfY29ubm9yIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KTG9hZGluZyBhbGwgb2YgdGhlIGxpYnJhcmllcw0KYGBge3J9DQpsaWJyYXJ5KGNvbXBsZXRlam91cm5leSkNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkobmFuaWFyKQ0KbGlicmFyeShsdWJyaWRhdGUpDQpgYGANCg0KTWVyZ2luZyBkYXRhDQpgYGB7cn0NCnRyYW5zYWN0aW9ucyA8LSBnZXRfdHJhbnNhY3Rpb25zKCkgJT4lDQogIGlubmVyX2pvaW4ocHJvZHVjdHMpICU+JQ0KICBpbm5lcl9qb2luKGRlbW9ncmFwaGljcykNCmBgYA0KDQojIyBGaXJzdCBncmFwaA0KYGBge3J9DQp0cmFuc2FjdGlvbnMgJT4lDQogIGZpbHRlcihzdHJfZGV0ZWN0KHByb2R1Y3RfY2F0ZWdvcnksIHJlZ2V4KCJmcnVpdCIsIGlnbm9yZV9jYXNlID0gVFJVRSkpKSAlPiUNCiAgZ3JvdXBfYnkocHJvZHVjdF9jYXRlZ29yeSwgYWdlKSAlPiUNCiAgc3VtbWFyaXplKHRvdGFsX3NhbGVzID0gc3VtKHNhbGVzX3ZhbHVlKSkgJT4lDQogIGdncGxvdChhZXMoeCA9IHByb2R1Y3RfY2F0ZWdvcnksIHkgPSB0b3RhbF9zYWxlcykpICsNCiAgZ2VvbV9jb2woZmlsbCA9ICJvcmFuZ2UiKSArDQogIGZhY2V0X3dyYXAofmFnZSwgbnJvdyA9IDIsIG5jb2wgPSAzKSArDQogIGNvb3JkX2ZsaXAoKSArDQogIGdndGl0bGUoIlR5cGUgYW5kIEFtb3VudCBvZiBGcnVpdCBQdXJjaGFzZWQgYnkgQWdlIEdyb3VwIikgKw0KICBzY2FsZV95X2NvbnRpbnVvdXMobmFtZSA9ICJTYWxlcyIsIGxhYmVscyA9IHNjYWxlczo6ZG9sbGFyKSArDQogIHNjYWxlX3hfZGlzY3JldGUobmFtZSA9ICJGcnVpdHMgUHJvZHVjdCBDYXRlZ29yeSIpDQpgYGANCg0KIyMgU2Vjb25kIGdyYXBoDQpgYGB7cn0NCnRyYW5zYWN0aW9ucyAlPiUNCiAgZmlsdGVyKHN0cl9kZXRlY3QocHJvZHVjdF9jYXRlZ29yeSwgcmVnZXgoImZydWl0IiwgaWdub3JlX2Nhc2UgPSBUUlVFKSkpICU+JQ0KICBncm91cF9ieShhZ2UsIE1vbnRoID0gbW9udGgodHJhbnNhY3Rpb25fdGltZXN0YW1wLCBsYWJlbCA9IFRSVUUpKSAlPiUNCiAgc3VtbWFyaXplKHRvdGFsX3NhbGVzID0gc3VtKHNhbGVzX3ZhbHVlKSkgJT4lDQogIGdncGxvdChhZXMoeCA9IE1vbnRoLCB5ID0gdG90YWxfc2FsZXMpKSArDQogIGdlb21fY29sKGZpbGwgPSAicHVycGxlIikgKw0KICBmYWNldF93cmFwKH5hZ2UsIG5yb3cgPSAzLCBuY29sID0gMikgKw0KICBnZ3RpdGxlKCJGcnVpdCBQdXJjaGFzZXMgYnkgQWdlIEdyb3VwIFRocm91Z2hvdXQgdGhlIFllYXIiKSArDQogIHNjYWxlX3lfY29udGludW91cyhuYW1lID0gIlNhbGVzIiwgbGFiZWxzID0gc2NhbGVzOjpkb2xsYXIpICsNCiAgc2NhbGVfeF9kaXNjcmV0ZShuYW1lID0gIk1vbnRoIikNCmBgYA0KDQojIyBUaGlyZCBncmFwaA0KYGBge3J9DQp0cmFuc2FjdGlvbnMgJT4lDQogIGZpbHRlcihzdHJfZGV0ZWN0KHByb2R1Y3RfY2F0ZWdvcnksIHJlZ2V4KCJmcnVpdCIsIGlnbm9yZV9jYXNlID0gVFJVRSkpKSAlPiUNCiAgZ3JvdXBfYnkocHJvZHVjdF9jYXRlZ29yeSwgYWdlLCBob3VzZWhvbGRfY29tcCkgJT4lDQogIHN1bW1hcml6ZSh0b3RhbF9zYWxlcyA9IHN1bShzYWxlc192YWx1ZSkpICU+JQ0KICBnZ3Bsb3QoYWVzKHggPSBob3VzZWhvbGRfY29tcCwgeSA9IHRvdGFsX3NhbGVzKSkgKw0KICBnZW9tX2NvbChmaWxsID0gImdyZWVuIikgKw0KICBjb29yZF9mbGlwKCkgKw0KICBmYWNldF93cmFwKH5hZ2UsIG5yb3cgPSAyLCBuY29sID0gMykgKw0KICBnZ3RpdGxlKCJGcnVpdCBQdXJjaGFzZXMgYnkgQWdlIEdyb3VwIGFuZCBIb3VzZWhvbGQgQ29tcG9zaXRpb24iKSArDQogIHNjYWxlX3lfY29udGludW91cyhuYW1lID0gIlNhbGVzIiwgbGFiZWxzID0gc2NhbGVzOjpkb2xsYXIpICsNCiAgc2NhbGVfeF9kaXNjcmV0ZShuYW1lID0gIkhvdXNlaG9sZCBDb21wb3NpdGlvbiIpDQpgYGANCg==