【发布时间】:2019-01-14 22:08:20
【问题描述】:
我有一个包含 2 个变量的数据集:一个 ID 和一个金额。我想对记录进行抽样(带替换),直到抽样的金额总和超过原始金额总和。
我有可以工作的示例代码,但有更好的方法吗?我想最终在一个大型数据集上运行 100K 次迭代,但我的方法似乎很笨拙。
在下面的代码中,我只运行了 3 次迭代。
set.seed(7777)
df <- data.frame(ID = seq(1,5),
AMT = sample(1:100, 5, replace = T))
threshold <- sum(df$AMT)
output <- NULL
for (i in 1:3) {
repeat{
sel <- df[sample(nrow(df), size = 1),]
sel <- cbind(iter=i, sel)
output <- rbind(output,
sel)
check_sum <- subset(output, iter == i)
if(sum(check_sum$AMT) > threshold) break
}
}
【问题讨论】: