从R中的数据表中采样

时间:2018-03-18 22:09:55

标签: r random datatable

我是R的新手,我想知道如何从Excel中完全由数字制作的csv文件中获取一定数量的样本。我设法将数据导入R并将每个数字作为一行使用,然后将随机行作为样本,但这似乎不切实际。整个文件显示为一列,我用下一个代码拿了一些样本:

ListView

另外请告诉我是否有办法重复此步骤至少100次,并将每个样本保存在另一个图表中,以后再使用它。

2 个答案:

答案 0 :(得分:0)

这就是你如何拍摄100个样本并存储它们:

my_samples <- replicate(100, Heights[sample(nrow(Heights), 5), ])

如果你的.csv文件只用逗号分隔一种类型的值(高度),而不是结构化为表格,你可能想把它变成一个向量。大多数读取文本数据格式的R函数都会将数据转换为数据框或其他类似格式的表格。

heights <- unlist(strsplit(readLines("yourfile.csv"), ","))
带有.csv文件的逗号分隔值的

readLines("yourfile.csv")会将其转换为字符向量。 strsplit()然后为你做分离工作。

将这些全部放在一起,用一个虚拟的例子:

writeLines(c("1,2,3,4,5", "6,7,8,9,10"), "test.csv")
heights <- as.numeric(unlist(strsplit(readLines("test.csv"), ",")))
set.seed(123)
my_samples <- replicate(100, sample(heights, 5))
dim(my_samples)
# [1]    5 100

您可以看到my_samples是一个包含5行的矩阵(每行对应于从heights采样的单个元素)和100列(每列对应于100个采样事件中的一个)。 / p>

答案 1 :(得分:0)

您可以使用用于引导的推断包。

library(infer)
rep_sample_n(size = 100, replace = TRUE, reps = 1)

这里“尺寸”是样品的数量。 “替换”(如果为真)允许您在采样时替换观察 - 也就是说,旋转轮盘赌轮而不会在轮子出现时将数字从轮子上移开。 'reps'允许您重复采样过程。