r - 创建具有不同范围和权重的样本
问题描述
我想用一些规则创建一个包含 3000 个条目的总样本:
Category-1(low) 0.1 - 0.3
Category-2(Medium) 0.4 - 0.7
Category-3(High) 0.7 - 0.9
我想以每个类别都有权重的方式创建样本,例如:
Category-1(low) 20% of the dataset
Category-2(Medium) 30% of the dataset
Category-3(High) 50% of the dataset
我无法找到这样做的指针。任何人都可以帮助我。提前非常感谢。
解决方案
我们可以使用在 OP 帖子中显示的范围之间Map
创建值的影响,同时生成范围内的比例也作为参数传递给seq
sample
Map
lst1 <- Map(function(x, y, z) sample(seq(x, y, by = 0.1), z,
replace = TRUE), c(0.1, 0.4, 0.7), c(0.3, 0.7, 0.9), c(0.2, 0.3, 0.5) * 3000)
names(lst1) <- c("low", "medium", "high")
lengths(lst1)
# low medium high
# 600 900 1500
out <- unlist(lst1)
length(out)
#[1] 3000
如果我们需要两列 data.frame
dat <- stack(lst1)[2:1]
推荐阅读
- r - 将矩阵中的列表与 R 中的另一个矩阵进行比较
- android - Android分页库在失效时将列表滚动到顶部
- macos - NSSplitView 隐藏子视图期间的奇怪行为
- javascript - 有没有办法直接从服务器下载大文件?(无需等待blob响应)
- java - $expand 在我的 JPA/Olingo 2.0.11 OData 服务中不起作用
- testing - 用他们的 test-binder 测试 spring-cloud-stream 总是抛出 MessageDeliveryException: Dispatcher has no subscribers for channel
- python - 回溯时更改变量
- python - SQL查询在插入表时导致问题
- python - *args 返回一个仅包含偶数参数的列表(Python)
- entity-framework - 如何从异步方法返回 Linq 查询结果