这比您要求的要多,但是我编写了一个名为的函数,stratified
可让您从data.frame
一个或多个组变量中随机抽取样本。
您可以像这样加载并使用它:
library(devtools)
source_gist("https://gist.github.com/mrdwab/6424112")
# [1] "https://raw.github.com/gist/6424112"
# SHA-1 hash of file is 0006d8548785ec8a5651c3dd599648cc88d153a4
## One row
stratified(mydf, "v2", 1)
# v1 v2
# 10 E 1
# 8 C 2
## Two rows
stratified(mydf, "v2", 2)
# v1 v2
# 2 B 1
# 6 B 1
# 3 C 2
# 5 B 2
我会在某个时候向该函数添加官方文档,但这里有一个摘要可以帮助您充分利用它:
的论据stratified
是:
df
: 输入data.frame
group
:组成“层”的一列或多列的字符向量。
size
:所需的样本量。
- 如果
size
是一个小于 1 的值,则从每个层中抽取一个比例样本。
- 如果
size
是 1 或更大的单个整数,则从每个层中获取该数量的样本。
- 如果
size
是整数向量,则为每个层获取指定数量的样本。建议您使用命名向量。例如,如果您有两个层,“A”和“B”,并且您想要“A”中的 5 个样本和“B”中的 10 个样本,您将输入size = c(A = 5, B = 10)
。
select
:这允许您在采样过程中对组进行子集化。这是一个list
. 例如,如果您的group
变量是“组”,它包含三个层,“A”、“B”和“C”,但您只想从“A”和“C”中抽样,您可以使用select = list(Group = c("A", "C"))
.
replace
: 用于更换取样。