Reports with tidyverse tools

The package fetches and normalizes data. Standard tidyverse tools handle analysis and presentation. These executable examples use synthetic data, not API estimates.

data <- tibble::tibble(
  app_id = "example", os = "unified", country = "US",
  date = as.Date(c("2025-01-01", "2026-01-01")),
  metric = "revenue", value = c(100, 150), unit = "USD", period = "month"
)
recipe_yoy(data)
#> # A tibble: 2 × 10
#>   app_id  os      country date       metric  value unit  period prior_value
#>   <chr>   <chr>   <chr>   <date>     <chr>   <dbl> <chr> <chr>        <dbl>
#> 1 example unified US      2025-01-01 revenue   100 USD   month           NA
#> 2 example unified US      2026-01-01 revenue   150 USD   month          100
#> # ℹ 1 more variable: yoy_growth <dbl>
recipe_portfolio(data)
#> # A tibble: 2 × 8
#>   os      country date       metric  unit  period value  apps
#>   <chr>   <chr>   <date>     <chr>   <chr> <chr>  <dbl> <int>
#> 1 unified US      2025-01-01 revenue USD   month    100     1
#> 2 unified US      2026-01-01 revenue USD   month    150     1

YoY matches the same period one year earlier. Missing or zero baselines produce missing growth. Portfolio totals reject duplicate observations and audience metrics, whose users can overlap. Missing sales values keep totals missing. Check coverage before interpreting complete totals; a successful response can still omit small apps or unavailable periods.

recipe_plot(data)
recipe_dashboard(data)
scales::label_dollar()(data$value)

For launch curves, add your chosen launch date and derive the day offset with mutate(day = as.integer(date - launch_date)). Arrange within app and country before cumsum(). Do not use na.rm = TRUE to hide missing launch observations.