我要使用一些规则创建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
我找不到执行此操作的指针。谁能帮我同样的忙。非常感谢。
答案 0 :(得分:2)
我们可以使用Map
在OP帖子中显示的范围之间创建一个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]
答案 1 :(得分:1)
我喜欢使用id
包进行数据生成。在这种情况下,我回填了符合类别规则的值。 Simstudy提供了一个data.table对象,但是我对Tidyverse语法更加熟悉:
simstudy
答案 2 :(得分:1)
一种相当简单的方法:
1。这不是随机的,但是取决于应用程序,这可能就足够了
ConcurrentHashMap
2。在这里,您还将绘制来自每个类别的数字:更多随机...
out <- c(runif(600, 0.1, 0.3), runif(900, 0.4, 0.7), runif(1500, 0.7, 0.9))