我一直在努力用R在for循环中随机抽取我的数据,但我需要帮助。这是我第一次编写循环并进行随机抽样... 这里有一个可重现的脚本,我到目前为止。 我想循环运行5次以获得每次包含3个随机和唯一观察值的不同样本。
所以每次迭代都会给我一个关于' virginica'的一个观察,一个用于' setosa'每次都有一种不同的颜色。
我的问题是我正在使用的两个函数(样本和重复)一个接一个地执行,我需要它们一起动作,因为我希望总是具有相同的最终样本数(N = 3)。
最后一个问题:如何保存结果?
有任何帮助吗?提前谢谢!
for(i in 1:5){ # Number of repetitions of the loop
rnd.iris <- iris[sample(1:nrow(iris),3,replace=FALSE),] # Take a random sample of size 3 from a dataset "iris"; sampling without replacement
rnd.iris <- rnd.iris[!duplicated(rnd.iris$Species),] # Eliminate replicates (but it does it after the randomization -> wrong for my purpose)
print(rnd.iris)
}
答案 0 :(得分:0)
首先,拆分数据。然后抽样。
for(i in 1:5) {
vi.iris <- iris[iris$Species=="virginica",]
vi.iris <- vi.iris[sample(1:nrow(vi.iris),1,replace=FALSE),]
se.iris <- iris[iris$Species=="setosa",]
se.iris <- se.iris[sample(1:nrow(se.iris),1,replace=FALSE),]
ve.iris <- iris[iris$Species=="versicolor",]
ve.iris <- ve.iris[sample(1:nrow(ve.iris),1,replace=FALSE),]
rnd.iris <- do.call(rbind, list(vi.iris, se.iris, ve.iris))
print(rnd.iris)
}
或者,您可以使用dplyr
。
rnd.iris <- iris %>% group_by(Species) %>% sample_n(1)