Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R循环中的唯一分层抽样_R_For Loop_Random_Unique - Fatal编程技术网

R循环中的唯一分层抽样

R循环中的唯一分层抽样,r,for-loop,random,unique,R,For Loop,Random,Unique,我一直在努力用R在for循环中随机抽取数据,但我需要帮助。这是我第一次写循环和做随机抽样。。。 这里有一个我到目前为止所拥有的可复制脚本。 我想运行5次循环,以获得不同的样本,每次包含3个随机和唯一的观察结果 所以每次迭代都会给我一个观察结果,一个是“维吉尼亚”,一个是“塞托萨”,一个是“花色”,每次都不同 我的问题是,我使用的两个函数(sample和duplicated)一个接一个地起作用,我需要它们一起起作用,因为我希望始终具有相同的最终样本数(N=3) 最后一个问题:如何保存结果 有什么帮

我一直在努力用R在for循环中随机抽取数据,但我需要帮助。这是我第一次写循环和做随机抽样。。。 这里有一个我到目前为止所拥有的可复制脚本。 我想运行5次循环,以获得不同的样本,每次包含3个随机和唯一的观察结果

所以每次迭代都会给我一个观察结果,一个是“维吉尼亚”,一个是“塞托萨”,一个是“花色”,每次都不同

我的问题是,我使用的两个函数(sample和duplicated)一个接一个地起作用,我需要它们一起起作用,因为我希望始终具有相同的最终样本数(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)
}
for(1:5中的i){#循环的重复次数

rnd.iris首先分割数据,然后采样

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)
}

当你说“随机独特观察”,你的意思是如果在第一次迭代中选择了某一行,就不应该在随后的迭代中选择它吗?我的意思是,在每次迭代中,我希望有三个不同的物种,因此它们永远不会重复:“virginica”“setosa”“versicolor”->是“virginica”“virginica”“versicolor”->否“virginica”“setosa”“setosa”->No@A.Idigoras您的做法是错误的。首先分割数据并对x行进行采样要比对整个数据进行采样并检查是否意外地从每组中采样一行容易得多。有关如何执行此操作,请参阅指向重复答案的链接。@Heroka,重复的问题适合我的数据。尽管我注意到结果矩阵确实如此es不保留原始行名称:现在行名称是物种…我将尝试在循环中找出如何更改它。如果需要行名称,可能最容易将它们转换为列(
df$something)如果有很多层,这不是很普遍。当采样1时,替换是不必要的,默认为false。@Heroka我同意你的意见。请参阅
dplyr
答案。这是我真正想要的,但正如@Heroka所说,我的数据中有太多层(123)。。。
rnd.iris <- iris %>% group_by(Species) %>% sample_n(1)