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

R语言如何基于动态起始日期自动计算指定债务还款列的数值总和

R语言实现动态违约日期后还款总额计算

核心思路:将宽格式的还款数据转为长格式,提取每列对应的还款周期起始日期,和用户的违约日期匹配后筛选符合条件的记录求和,适配任意数量的还款列场景。

完整可运行代码

# 加载依赖包
library(dplyr)
library(tidyr)
library(lubridate)
library(stringr)

# 测试数据生成
Borrower_ID <- c(1,2,3,4,5)
Default_Date <- c("2020-01-06", "2020-02-17", "2020-03-20", "2020-04-21", "2020-05-21")
Debt_Repayment_2020.01.01_2020.01.31 <- c(10,20,30,40,50)
Debt_Repayment_2020.02.01_2020.02.28 <- c(20,30,40,50,60)
Debt_Repayment_2020.03.01_2020.03.31 <- c(30,40,50,60,70)
Debt_Repayment_2020.04.01_2020.04.30 <- c(40,50,60,70,80)
Debt_Repayment_2020.05.01_2020.05.31 <- c(50,60,70,80,90)

table_test <- data.frame(Borrower_ID, Default_Date, Debt_Repayment_2020.01.01_2020.01.31, Debt_Repayment_2020.02.01_2020.02.28, Debt_Repayment_2020.03.01_2020.03.31, Debt_Repayment_2020.04.01_2020.04.30, Debt_Repayment_2020.05.01_2020.05.31)

# 核心计算逻辑
result <- table_test %>%
  # 转换违约日期为日期格式
  mutate(Default_Date = ymd(Default_Date)) %>%
  # 宽表转长表,将所有还款列转为行存储
  pivot_longer(cols = starts_with("Debt_Repayment_"),
               names_to = "repayment_period",
               values_to = "repayment_amount") %>%
  # 提取还款周期起始日期,转换为统一日期格式
  mutate(period_start = str_extract(repayment_period, "(?<=Debt_Repayment_)\\d{4}\\.\\d{2}\\.\\d{2}") %>%
           gsub("\\.", "-", .) %>%
           ymd()) %>%
  # 筛选违约日期之后的还款记录
  filter(period_start > Default_Date) %>%
  # 按用户分组计算总还款额
  group_by(Borrower_ID, Default_Date) %>%
  summarise(total_repayment_after_default = sum(repayment_amount), .groups = "drop") %>%
  # 结果合并回原始表,保留所有原始字段
  left_join(table_test, ., by = c("Borrower_ID", "Default_Date"))

# 输出结果
print(result$total_repayment_after_default)

结果验证

运行后输出的总还款额依次为140、180、150、90、0,和手动计算结果完全匹配:

  • 借款人1违约日期为2020-01-06,求和2-5月还款:20+30+40+50=140
  • 借款人5违约日期为2020-05-21,没有晚于该日期的还款周期,结果为0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 21:42:02