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

R 从df的随机级别中选择所有行,r,R,从其他问题和答案可以了解如何从df中随机抽取“n”行,或从df中某个特定级别的因子中抽取“n”行。但是,我没有找到如何从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

从其他问题和答案可以了解如何从df中随机抽取“n”行,或从df中某个特定级别的因子中抽取“n”行。但是,我没有找到如何从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我们可以首先
根据我们想要的“颜色”过滤
数据集,然后
切片
样本
d
行号()


注:不清楚“颜色”是否也应为
sample
d。因此,我们将其包括在
过滤器
步骤中

我们可以基于上述内容创建一个函数

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)
fSample%
切片(样本(行号())
}
F样本(df,颜色,4)

好的,谢谢!我明白了。但是我有一个问题,我需要从Im采样级别获取所有行。。。在我的真实数据集中,我不能像你那样指定有多少行(示例(1)),因为每个级别有不同的行数,我需要所有的行。如果我删除这一行(示例(1)),脚本将不再工作。好的,明白了,刚刚删除了所有内容,包括最后的%>%。Thanks@Cisco我改了。现在你将从过滤后的colorIm中获得所有的行,因为dplyr有一个奇怪的错误。。。我的R没有找到enquo(),所以我重新安装了dplyer并得到以下结果:loadNamespace(I,c(lib.loc,.libpath()),versionCheck=vI[[I]])中出现错误:正在加载命名空间“DBI”0.3.1,但除此之外还需要>=0.4.1:警告消息:包“dplyr”是在R版本3.2.5下生成的错误:包或命名空间加载失败dplyr@Cisco你能更新你的R然后安装dplyr吗。我正在使用R3.4.1是的,我的版本是R3.2.1。。。我会更新的谢谢
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)