这个问题与Subset data with dynamic conditions in R的问题有关。 我们的想法是从数据框中创建一个必须满足某些条件的随机样本。
size参数指示样本应包含的行数。但是,只要条件得到满足,我们实际上并不关心有多少行。因此,在下面的示例中,我们将大小设置为“3”,而它也可以使用2。
有没有指明行数的方法?似乎sample()
需要有一个样本大小...我想我可以设置范围(1:8),例如size参数。但是,一旦我设置简单(1:8),样本就会使用1。
dataset <- data.frame(balance=c(25000,50000,35000,40000,65000,10000,5000,2000,2500,5000),
rating=c(2.11,4.49,2.45,1.94,2,4.2,10,8,6,7.45)
,id=c(1:10))
pick_records <- function(df,size,bal,rating, 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)
if (sum(out_num$balance) > bal &
mean(out_num$rating) <= rating
) {
return(output)
break
}
print(j)
j <- j + 1
if ( j == max.it+1) {
print('No solution found')
break}
}
}
#set parameters: #loans, total balance,max mean rating, #iterations
loans=2;balance=70000; rating=3;iterations=5000
pool <- pick_records(dataset,loans,balance,rating,iterations)