gpt4 book ai didi

r - R 中具有动态条件的子集数据

转载 作者:行者123 更新时间:2023-12-03 16:53:03 24 4
gpt4 key购买 nike

我有一个包含 2500 行的数据集,这些行都是银行贷款。每笔银行贷款都有未偿还金额和抵押品类型。 (房地产、机床..等)

我需要从这个数据集中随机选择一个,例如,未偿还金额的总和 = 250 万 +-5% 和最大 25% 的相同 Assets 类别的贷款。

我找到了 optim 函数,但这需要一个函数,看起来是为优化股票投资组合而构建的,这要复杂得多。我会说有一种简单的方法可以实现这一目标吗?

我创建了一个示例数据集,可以更好地说明我的问题:

dataset <- data.frame(balance=c(25000,50000,35000,40000,65000,10000,5000,2000,2500,5000)
,Collateral=c("Real estate","Aeroplanes","Machine tools","Auto Vehicles","Real estate",
"Machine tools","Office equipment","Machine tools","Real estate","Auto Vehicles"))

例如,如果我想从此数据集中提取 5 笔贷款,其中未偿余额之和 = 200.000( margin 为 10%)且不超过 40% 的抵押品类型允许相同。 (所以在这个例子中最多 5 个中有 2 个)

如果需要其他信息,请告诉我。非常感谢,蒂姆

最佳答案

我制作的这个功能有效:

pick_records <- function(df,size,bal,collat,max.it) {
i <- 1
j <- 1
while ( i == 1 ) {
s_index <- sample(1:nrow(df) , size)
print(s_index)
output <- df[s_index,]
out_num <- lapply(output,as.numeric)
tot.col <- sum(as.numeric(out_num$Collateral))
if (sum(out_num$balance) < (bal*1.1) &
sum(out_num$balance) > (bal*0.9) &
all( table(out_num$Collateral)/size <= collat) ) {
return(output)
break
}
print(j)
j <- j + 1
if ( j == max.it+1) {
print('No solution found')
break}
}
}

> a <- pick_records(dataset,5,200000,0.4,20)
> a
balance Collateral
3 35000 Machine tools
7 5000 Office equipment
4 40000 Auto Vehicles
5 65000 Real estate
2 50000 Aeroplanes

df 是您的数据框,size 是您想要的记录数,max.it 是找到一个数据的最大迭代次数返回未找到解决方案错误之前的解决方案,bal 是余额的限制,collat​​ 与 Collat​​eral 相同。您可以随意更改它们。

如果您没有得到其中的任何部分,请告诉我。

关于r - R 中具有动态条件的子集数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27244579/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com