假设我有一个关于小额贷款商店的数据集,我想了解其贷款被质押证券覆盖的情况。问题是,我为一笔贷款质押了多份证券,为多笔贷款质押了一份证券:
cAID cID cLoan sID sAmount
1 10 50 200 100 1100
2 11 50 1000 100 1100
3 12 60 1000 110 900
4 12 60 1000 120 300
5 14 80 1000 140 1200
6 15 90 1000 150 900
分配给贷款的担保金额不应超过贷款,如果担保高于贷款,并且有另一笔由该担保支持的贷款,则应将剩余部分分配给它。
理想情况下,我希望它最终是这样的:
cAIDa cIDa cLoanA sIDa sAmountA asignedSAmountA CoverageRatio
1 10 50 200 100 1100 200 1.0
2 11 50 1000 100 1100 900 0.9
3 12 60 1000 110 900 1000 1.0
4 12 60 1000 120 300 1000 1.0
5 14 80 1000 140 1200 1000 1.0
6 15 90 1000 150 900 900 0.9
如何在 R 或 Excel 中生成这两个其他列?基本上最后我想要唯一的客户账户 ID 和分配的证券总和,而不会超过证券。第一笔原始贷款是 200 (cLoanA),保证金 (sAmountA) 是 1100,因此分配的保证金是贷款的最大值 (asignedSAmountA),因此是 200,但下一笔贷款使用相同的保证金(注意相同的 sIDa),它是 1100,我们第一次贷款减去 200,剩下 900,因为第二行 cLoanA 为 1000,更高,因此我们使用全额保证金,比率为 0.9,这意味着部分是无抵押的。这就是我在 asignedSAmountA 和 Coverage ratio 中导出前几个数字的方法。
我在 R 中的代码:`
#example client AccountID
cAIDa <- c(10, 11, 12, 12, 14, 15)
#example client AccountID
cAIDa <- c(10, 11, 12, 12, 14, 15)
#example client ID
cIDa <- c(50, 50, 60, 60, 80, 90)
#example loan amount
cLoanA <- c(200, 1000, 1000, 1000, 1000, 1000)
#example security pledged ID
sIDa <- c(100, 100, 110, 120, 140, 150)
#example security pledged Amount
sAmountA <- c(1100,1100,900,300,1200, 900)
# generate initial data.frame
portfolioOne <- data.frame(cAIDa,cIDa,cLoanA,sIDa,sAmountA)
portfolioOne
#assign security sum by unique account id
asignedSAmountA <- c(200, 900, 1200, 1200, 1000, 900)
portfolioTwo <- data.frame(cAIDa,cIDa,cLoanA,sIDa,sAmountA, asignedSAmountA)
ratio1 <- asignedSAmountA/portfolioOne$cLoanA
portfolioTwo$CoverageRatio <- ratio1
portfolioTwo