# Generate the adapted edge table used by the Apple revenue Sankey recipe.
script_dir <- local({
arg <- grep("^--file=", commandArgs(trailingOnly = FALSE), value = TRUE)
path <- if (length(arg)) sub("^--file=", "", arg[[1L]]) else sys.frame(1)$ofile
dirname(normalizePath(path, mustWork = TRUE))
})
out_csv <- file.path(script_dir, "..", "csv", "apple_revenue_flow.csv")
dir.create(dirname(out_csv), recursive = TRUE, showWarnings = FALSE)
apple_revenue_flow <- data.frame(
source = c(
"iPhone", "Mac", "iPad", "Wearables & accessories", "Products", "Services",
"Net sales", "Net sales", "Gross margin", "Gross margin", "Gross margin",
"Operating income", "Operating income", "Pretax income", "Pretax income"
),
target = c(
"Products", "Products", "Products", "Products", "Net sales", "Net sales",
"Cost of sales", "Gross margin", "R&D", "SG&A", "Operating income",
"Other expense", "Pretax income", "Income taxes", "Net income"
),
value_musd = c(
44582, 8046, 6581, 7404, 66613, 27423, 50318, 43718,
8866, 6650, 28202, 171, 28031, 4597, 23434
),
stage = c(
rep("Revenue sources", 6), rep("Cost of sales", 2),
rep("Operating expenses", 3), rep("Below operating income", 4)
),
stringsAsFactors = FALSE
)
stopifnot(
sum(apple_revenue_flow$value_musd[apple_revenue_flow$target == "Products"]) == 66613,
sum(apple_revenue_flow$value_musd[apple_revenue_flow$target == "Net sales"]) == 94036,
sum(apple_revenue_flow$value_musd[apple_revenue_flow$source == "Net sales"]) == 94036,
sum(apple_revenue_flow$value_musd[apple_revenue_flow$source == "Gross margin"]) == 43718,
sum(apple_revenue_flow$value_musd[apple_revenue_flow$source == "Operating income"]) == 28202,
sum(apple_revenue_flow$value_musd[apple_revenue_flow$source == "Pretax income"]) == 28031
)
write.csv(apple_revenue_flow, out_csv, row.names = FALSE)