我有一個資料集,其中包含多個客戶,每個客戶都有多筆貸款。貸款每月還款。請參閱名為 data1 的資料框示例(請參閱下面的 data1 示例)。
Fore_Cast_Horizo??n = 1 的期末余額公式為:Account_Balance (Account_Balance*Interest_Rate) - 分期付款
Fore_Cast_Horizo??n > 1 的期末余額公式為 Account_Balance[i-1] (Account_Balance[i-1]*Interest_Rate[i] - Instalment[i]
這需要為資料中的每個新 ACCOUNT_ID 重置。
我需要幫助在 r 中編程
Customer_ID ACCOUNT_ID Account_Balance Instalment Interest_Rate Fore_Cast_Horizon Closing Balance
100 2 500 50 0.02 1 460.0000
100 2 500 50 0.02 2 419.2000
010 2 500 50 0.02 3 377.5840
100 4 800 80 0.03 1 744.0000
100 4 800 80 0.03 2 686.3200
100 4 800 80 0.03 3 626.9096
uj5u.com熱心網友回復:
我認為以下解決了您的問題:
library(tidyverse)
df <- data.frame(
Customer_ID = c(100L, 100L, 10L, 100L, 100L, 100L),
ACCOUNT_ID = c(2L, 2L, 2L, 4L, 4L, 4L),
Account_Balance = c(500L, 500L, 500L, 800L, 800L, 800L),
Instalment = c(50L, 50L, 50L, 80L, 80L, 80L),
Interest_Rate = c(0.02, 0.02, 0.02, 0.03, 0.03, 0.03),
Fore_Cast_Horizon = c(1L, 2L, 3L, 1L, 2L, 3L),
Closing.Balance = c(460, 419.2, 377.584, 744, 686.32, 626.9096)
)
df %>%
group_by(ACCOUNT_ID) %>%
mutate(
idg = row_number(ACCOUNT_ID),
raux = ifelse(idg == 1, 0, Interest_Rate),
CB2 = Account_Balance * cumprod(1 Interest_Rate) -
cumsum(Instalment * cumprod(1 raux)), raux = NULL, idg = NULL) %>%
ungroup() %>%
as.data.frame()
#> Customer_ID ACCOUNT_ID Account_Balance Instalment Interest_Rate
#> 1 100 2 500 50 0.02
#> 2 100 2 500 50 0.02
#> 3 10 2 500 50 0.02
#> 4 100 4 800 80 0.03
#> 5 100 4 800 80 0.03
#> 6 100 4 800 80 0.03
#> Fore_Cast_Horizon Closing.Balance CB2
#> 1 1 460.0000 460.0000
#> 2 2 419.2000 419.2000
#> 3 3 377.5840 377.5840
#> 4 1 744.0000 744.0000
#> 5 2 686.3200 686.3200
#> 6 3 626.9096 626.9096
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/347583.html
標籤:r
上一篇:如何保留那些重復多次的字串
