从df的随机级别中选择所有行

时间:2017-08-23 08:42:36

标签: r

从其他问题和答案中可以了解如何从df或“n”行中随机抽取“n”行,这些行来自df中特定级别的因子。但是我没有找到如何从DF中选择随机“n”级别的所有行。

这是一个正在运作的df。

df <- data.frame(matrix(rnorm(80), nrow=40))
df$color <-  rep(c("blue", "red", "yellow", "pink","purple","brown","green","olive"), each=5)
df$color <-as.factor(df$color)

我想要的是使用随机样本获得不同的df,其中包含4行的所有5行颜色。

1 个答案:

答案 0 :(得分:1)

我们可以首先filter基于&#39;颜色&#39;我们想要slice sample d row_number()

library(dplyr)
df %>%
    filter(color %in% sample(unique(color), 4)) %>%
    slice(sample(row_number()))

注意:目前尚不清楚颜色是否为&#39;也应该是sample d。因此,我们将其包含在filter步骤

我们可以根据上面的

创建一个函数
fSample <- function(dat, colr, n) {
        colr <- enquo(colr)
        dat %>%
             filter(UQ(colr) %in% sample(unique(UQ(colr)), n)) %>%
             slice(sample(row_number()))
}

fSample(df, color, 4)