【发布时间】:2018-05-26 10:03:18
【问题描述】:
我有一个数据框,其中包含来自财务报表(例如损益表、资产负债表、现金流量表)的数据,每一行指的是财务报表条目(例如收入、利润),每列指的是特定的年。
数据示例如下:
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")
这个source 表示我无法在 mutate 中过滤。
我尝试使用子集表示法来获取后续除法步骤的“收入”行,但它失败了:
df <- df %>%
mutate(percentage = year_2014/variable["Revenue"])
我也搜索过 Stackoverflow,但找不到答案。我得到的“最接近”的答案是这个post 和这个post。但是,这些帖子不同,因为它们的数据集是长格式(与我的宽格式相反),它们的数据集由组组成(我没有“group_by”),我需要对我正在制作的特定行进行硬编码参考。
非常感谢!谢谢!
【问题讨论】: