从其他问题和答案中可以了解如何从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行颜色。
答案 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)