У меня есть фрейм данных, состоящий из данных из финансовых отчетов (например, отчета о прибылях и убытках, бухгалтерского баланса, отчета о движении денежных средств), где каждая строка ссылается на запись финансового отчета (например, выручка, прибыль) и каждый столбец ссылается на определенныйгод.
Примером данных могут быть следующие:
variable <- c("Revenue", "Cost of Goods Sold", "Gross Profit", "SG&A", "Operating Income", "Interest Expense",
"Pretax Income", "Income Tax", "Net Income")
year_2014 <- c(6500, 3012, 3488, 1231, 2257, 231, 2026, 462, 1564)
year_2015 <- c(3250, 1323, 1927, 912, 1015, 109, 906, 209, 697)
year_2016 <- c(4965, 2723, 2242, 1159, 1083, 106, 977, 187, 790)
df <- data.frame(variable, year_2014, year_2015, year_2016)
Я хотел бы получить общий размер финансового отчета, где я делю каждую строку на сумму выручки.Например, в 2014 году чистый доход 1564 года / доход 6500 * 100. Налог на прибыль 462 / доход 6500 * 100 и т. Д.
Конечный результат, который я ищу, выглядит примерно так:
Я пытался решить проблему несколькими способами, но все это не сработало:
library(dplyr)
df <- df %>%
mutate(percentage = year_2014/filter(select(year_2014), variable == "Revenue")
Указан источник что я не могу фильтровать в mutate.
Я попытался использовать нотацию поднабора, чтобы получить строку «Доход» для последующих шагов деления, но это не удалось:
df <- df %>%
mutate(percentage = year_2014/variable["Revenue"])
Я также искал Stackoverflow, но не могу найти ответ.«Самый близкий» ответ, который я получил, был пост и пост .Однако эти записи различаются, поскольку их наборы данных представлены в длинном формате (в отличие от широкоформатного, такого как мой), их наборы данных состоят из групп (у меня нет ничего для «group_by»), и мне нужно жестко закодировать конкретную строку, которую я создаюссылка на.
Очень ценится!Спасибо!