Code
r
library(dplyr)
set.seed(1)
sales <- tibble(
region = sample(c("North", "South", "East", "West"), 20, replace = TRUE),
product = sample(c("A", "B", "C"), 20, replace = TRUE),
units = sample(1:50, 20, replace = TRUE),
price = runif(20, 5, 25)
)
# Pipeline of verbs
result <- sales |>
mutate(revenue = units * price) |>
filter(units > 10) |>
group_by(region, product) |>
summarise(
total_revenue = sum(revenue),
avg_units = mean(units),
n = n(),
.groups = "drop"
) |>
arrange(desc(total_revenue))
print(result)
# Select and rename
trimmed <- sales |>
select(region, product, revenue = units) |>
slice_head(n = 5)
print(trimmed)
# Count
print(count(sales, region, sort = TRUE))
# Join
targets <- tibble(region = c("North", "South"), goal = c(500, 600))
joined <- sales |>
mutate(revenue = units * price) |>
group_by(region) |>
summarise(total = sum(revenue)) |>
left_join(targets, by = "region") |>
mutate(met_goal = total >= goal)
print(joined)