如何在 R 中使用不同的样本量进行采样?
How to sample with various sample size in R?
我正在尝试从不同大小的数据框中获取随机样本。
例如第一个样本应该只有 8 个观察值
第二个样本可以有 10 个观察值
第三个可以有 12 个观察
df[样本(nrow(df),10),]
当我取样时,这给了我固定的 10 个观察结果
在理想情况下,我有 100 个观察结果,这些观察结果应无放回地分成 3 组,每组可以有任意数量的观察结果。示例第 1 组有 45 个观察值,第 2 组有 20 个观察值,第 3 组有 35 个观察值。
任何帮助将不胜感激
您可以尝试使用 replicate
:
times_to_sample = 5L
NN = nrow(df)
replicate(times_to_sample, df[sample(NN, sample(5:10, 1L)), ], simplify = FALSE)
这将 return 一个 list
长度 times_to_sample
,第 i
个元素会给你一个 data.frame
的结果i
次复制。
simplify=FALSE
防止 simplify2array
将结果破坏成一个不是特别有用的矩阵。
您还应该考虑添加一些稳健性检查——例如,您说您想要 5 到 10 行,但将其概括为从 a
到 b
行,您我想确保 a >= 1
, b <= nrow(df)
.
如果 times_to_sample
会很大,那么预先从 5:10
获取所有样本会更有效:
idx = sample(5:10, times_to_sample, replace = TRUE)
lapply(idx, function(i) df[sample(NN, i), ])
可读性稍差,但肯定比重复 sample(5:10, 1)
更有效,即一次只有一个(不利用向量化)
我正在尝试从不同大小的数据框中获取随机样本。 例如第一个样本应该只有 8 个观察值 第二个样本可以有 10 个观察值 第三个可以有 12 个观察
df[样本(nrow(df),10),]
当我取样时,这给了我固定的 10 个观察结果
在理想情况下,我有 100 个观察结果,这些观察结果应无放回地分成 3 组,每组可以有任意数量的观察结果。示例第 1 组有 45 个观察值,第 2 组有 20 个观察值,第 3 组有 35 个观察值。
任何帮助将不胜感激
您可以尝试使用 replicate
:
times_to_sample = 5L
NN = nrow(df)
replicate(times_to_sample, df[sample(NN, sample(5:10, 1L)), ], simplify = FALSE)
这将 return 一个 list
长度 times_to_sample
,第 i
个元素会给你一个 data.frame
的结果i
次复制。
simplify=FALSE
防止 simplify2array
将结果破坏成一个不是特别有用的矩阵。
您还应该考虑添加一些稳健性检查——例如,您说您想要 5 到 10 行,但将其概括为从 a
到 b
行,您我想确保 a >= 1
, b <= nrow(df)
.
如果 times_to_sample
会很大,那么预先从 5:10
获取所有样本会更有效:
idx = sample(5:10, times_to_sample, replace = TRUE)
lapply(idx, function(i) df[sample(NN, i), ])
可读性稍差,但肯定比重复 sample(5:10, 1)
更有效,即一次只有一个(不利用向量化)