r - R中的资产负债表建模
问题描述
我需要为一个基本的资产负债表建模,其中 1)最终余额是初始余额加上现金流量,2)初始余额等于之前的最终余额。以下代码工作正常:
init_balance <- c(0,0,0,0)
cash_flow <- 1:4
final_balance <- c(0,0,0,0)
n <- length (final_balance)
for (i in 1:n) {
final_balance[i] <- init_balance[i] + cash_flow[i]
if(i < n) {
init_balance[i+1] <- final_balance[i]
}
}
> init_balance
[1] 0 1 3 6
> cash_flow
[1] 1 2 3 4
> final_balance
[1] 1 3 6 10
然而,这个实现使用了for
循环,对我来说听起来并不像 R-ish。我发现的所有财务包都与财务分析有关,而不是财务建模。
有人会为这种建模建议另一种方法或包吗?
谢谢你。
解决方案
不需要循环,您真正需要的只是cash_flow
开始:
library(tidyverse)
df <- tibble(
cash_flow = 1:4
)
df
#> # A tibble: 4 x 1
#> cash_flow
#> <int>
#> 1 1
#> 2 2
#> 3 3
#> 4 4
df %>%
mutate(
final_balance = cumsum(cash_flow),
init_balance = lag(final_balance, 1, default = 0)
)
#> # A tibble: 4 x 3
#> cash_flow final_balance init_balance
#> <int> <int> <dbl>
#> 1 1 1 0
#> 2 2 3 1
#> 3 3 6 3
#> 4 4 10 6
由reprex 包(v0.2.1)于 2019 年 3 月 21 日创建
你final_balance
的只是累计现金流。因为init_balance
我们使用lag
的是final_balance
by 1 period(想想 1 period prior);我们还将其默认数量设置为零而不是NA
.
推荐阅读
- angular - 无法在角度 9 中将值从父组件传递到子组件
- python-3.x - 仅保留日期为整小时的数据框行
- java - 如何在 JUnit @Before 方法和测试方法中使用 EasyMock 对象
- reactjs - 无法从 Express 服务器获取数据到 React
- linux - 关于在shell编程中保存表达式的值
- mysql - 安装 MySQL 但进入应用配置时无法启动服务器
- julia - Julia中的滑动窗口功能
- r - 如何将变量添加到 R 中的字符串中?我基本上是在尝试参数化字符串,就像在 SQL 中一样
- python - 如何在 Trie 中进行深度搜索?
- sql - 将值替换为不同的值