【发布时间】:2014-07-12 23:02:14
【问题描述】:
从这些问题 - Random sample of rows from subset of an R dataframe 和 Sample random rows in dataframe 我可以很容易地看到如何从 df 中随机抽样(选择)“n”行,或者从 df 中某个因子的特定级别产生的“n”行.
以下是一些示例数据:
df <- data.frame(matrix(rnorm(80), nrow=40))
df$color <- rep(c("blue", "red", "yellow", "pink"), each=10)
df[sample(nrow(df), 3), ] #samples 3 random rows from df, without replacement.
例如只需从“粉红色”颜色中随机抽取 3 行 - 使用 library(kimisc):
library(kimisc)
sample.rows(subset(df, color == "pink"), 3)
或编写自定义函数:
sample.df <- function(df, n) df[sample(nrow(df), n), , drop = FALSE]
sample.df(subset(df, color == "pink"), 3)
但是,我想从因子的 每个级别 中抽取 3 个(或 n 个)随机行。 IE。新的 df 将有 12 行(蓝色 3 行,红色 3 行,黄色 3 行,粉红色 3 行)。显然可以运行几次,为每种颜色创建 newdfs,然后将它们绑定在一起,但我正在寻找更简单的解决方案。
【问题讨论】:
-
这能回答你的问题吗? Take random sample by group