2016-05-10 59 views
4

給定一個數據幀df與一列名爲group,你如何從dplyr中隨機抽樣k組?它應該返回來自k組的所有行(由於df$group中至少有k個唯一值),並且df中的每個組應該返回的可能性相同。隨機樣本羣組

+2

也許你可以提供一些例子多少數據?另請參閱'?sample_n' – SymbolixAU

+0

虹膜就足夠了。分組變量有物種。 –

+0

使用''sample_n''給每個組''n''隨機抽樣的行。我要求從''n''隨機抽樣組中的所有行。 –

回答

12

只需使用sample()選擇組的一些數量

iris %>% filter(Species %in% sample(levels(Species),2)) 
0

雖然爲什麼你要做到這一點在dplyr沒有意義的,我說:

library(microbenchmark) 
microbenchmark(dplyr= iris %>% filter(Species %in% sample(levels(Species),2)), 
       base= iris[iris[["Species"]] %in% sample(levels(iris[["Species"]]), 2),]) 

Unit: microseconds 
    expr  min  lq  mean median  uq  max neval cld 
dplyr 660.287 710.655 753.6704 722.629 771.2860 1122.527 100 b 
    base 83.629 95.032 110.0936 106.057 119.1715 199.949 100 a 

注意[[是已知要比$快,雖然兩者都可以工作