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
相关产品推荐
相关产品推荐

