You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言中如何分步实现抵押贷款月度利息按年度cumsum累计求和

R计算抵押贷款年度累计利息实现方案

你可以通过将月度利息序列按12个一组折叠分组的方式实现需求,以下是两种常用实现方式:

方式1:基础R实现(无需安装额外包)

H <- 2000000 # 贷款本金
i.m <- 0.03/12 # 月利率
year <- 15 # 贷款年限

a <- (H*i.m*(1+i.m)^(12*year))/
  ((1+i.m)^(12*year)-1)
a # 月供金额

# 生成180个月的月度利息序列
monthly_interest <- a*(1-(1/(1+i.m)^(0:(year*12-1)))) 

# 按12个月为一组转为矩阵,每列对应一年的月度利息
year_interest_mat <- matrix(monthly_interest, nrow = 12, ncol = year)
# 先计算每年当年利息,再累加得到年度累计利息
annual_cum_interest <- cumsum(colSums(year_interest_mat))

# 输出结果,第N个值对应第N年末的累计总利息
annual_cum_interest

方式2:tidyverse实现(适配不规则月度数据)

如果你的月度数据长度不是12的整数倍,用dplyr分组处理更灵活:

library(dplyr)

data.frame(
  month = 1:length(monthly_interest),
  interest = monthly_interest
) %>% 
  # 按每12个月划分年度
  mutate(year = ceiling(month/12)) %>% 
  # 按年分组求和得到当年利息
  group_by(year) %>% 
  summarise(year_total_interest = sum(interest)) %>% 
  # 累加得到年度累计利息
  mutate(annual_cum_interest = cumsum(year_total_interest))

补充说明

  • 若只需要每年的当年利息,不需要逐年累计,删除代码中cumsum()步骤即可
  • 原代码生成的利息序列长度为181(多了第0个月的冗余值),示例中已修正为对应180个月的有效利息序列,你可以根据实际数据调整长度

内容的提问来源于stack exchange,提问作者Jaroslav Kotrba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 22:15:03