如何使用 r 中的 sample 函数生成样本


R 中的sample()函数允许您从数据集或向量中随机抽取元素样本,无论是否有替换。

Sample() 函数的基本语法是:

样本(x,大小,替换= FALSE ,概率= NULL

x :从中选择样本的数据集或向量
尺寸:样品尺寸
替换:是否应该在替换的情况下进行采样? (默认情况下这是 FALSE)
prob :概率权重向量,用于获取采样向量的元素

Sample() 的完整文档可以在这里找到。

以下示例演示了使用sample()的实际示例。

从向量生成样本

假设我们有一个包含 10 个元素的向量 a:

 #define vector a with 10 elements in it
a <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

要生成向量a的 5 个元素的随机样本而不需要放回,我们可以使用以下语法:

 #generate random sample of 5 elements from vector a
sample(a, 5)

#[1] 3 1 4 7 5

值得注意的是,每次我们生成随机样本时,我们很可能每次都会得到一组不同的项目。

 #generate another random sample of 5 elements from vector a
sample(a, 5)

#[1] 1 8 7 4 2

如果我们希望能够复制结果并每次使用相同的样本,我们可以使用set.seed()

 #set.seed(some random number) to ensure that we get the same sample each time
set.seed(122)

#define vector a with 10 elements in it
a <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

#generate random sample of 5 elements from vector a
sample(a, 5)

#[1] 10 9 2 1 4

#generate another random sample of 5 elements from vector a
sample(a, 5)

#[1] 10 9 2 1 4

我们还可以使用replace = TRUE参数来进行替换采样。这意味着向量的每个元素都可以选择在样本中出现多次。

 #generate random sample of 5 elements from vector a using sampling with replacement
sample(a, 5, replace = TRUE)

#10 10 2 1 6

从数据集生成样本

Sample() 函数的另一个常见用途是从数据集中生成行的随机样本。对于以下示例,我们将从内置 R 数据集iris生成 10 行的随机样本,该数据集总共 150 行。

 #view first 6 rows of iris dataset
head(iris)

# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1 5.1 3.5 1.4 0.2 setosa
#2 4.9 3.0 1.4 0.2 setosa
#3 4.7 3.2 1.3 0.2 setosa
#4 4.6 3.1 1.5 0.2 setosa
#5 5.0 3.6 1.4 0.2 setosa
#6 5.4 3.9 1.7 0.4 setosa

#set seed to ensure that this example is replicable
set.seed(100)

#choose a random vector of 10 elements from all 150 rows in iris dataset
sample_rows <- sample(1:nrow(iris), 10)
sample_rows

#[1] 47 39 82 9 69 71 117 53 78 25

#choose the 10 rows of the iris dataset that match the row numbers above
sample <- iris[sample_rows, ]
sample

# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#47 5.1 3.8 1.6 0.2 setosa
#39 4.4 3.0 1.3 0.2 setosa
#82 5.5 2.4 3.7 1.0 versicolor
#9 4.4 2.9 1.4 0.2 setosa
#69 6.2 2.2 4.5 1.5 versicolor
#71 5.9 3.2 4.8 1.8 versicolor
#117 6.5 3.0 5.5 1.8 virginica
#53 6.9 3.1 4.9 1.5 versicolor
#78 6.7 3.0 5.0 1.7 versicolor
#25 4.8 3.4 1.9 0.2 setosa

请注意,如果您将上面的代码复制并粘贴到您自己的 R 控制台中,您应该获得完全相同的样本,因为我们使用set.seed(100)来确保每次都获得相同的样本。

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注