如何从每个组具有不同行数的组中绘制 n
行?
df <- data.frame(matrix(rnorm(80), nrow=40))
df$color <- rep(c("blue", "red", "yellow", "pink"), each=10)
我试过了,
library(dplyr)
outdat <- df %>%
group_by(color) %>%
sample_n(nrow(.), replace = TRUE)
outdat
但这会返回一个 data.frame,其中
nrow(.)
是来自 df 的 nrows 而不是子集。This SO post is close ,但定义了特定数量的行绘制。我需要它特定于 dplyr 中的组。
最佳答案
另一种解决方法,使用 sample_frac
:
outdat <- df %>%
group_by(color) %>%
sample_frac(1, replace = TRUE)
outdat
# # A tibble: 40 x 3
# # Groups: color [4]
# X1 X2 color
# <dbl> <dbl> <chr>
# 1 0.69256186 0.97180252 blue
# 2 1.54384827 -0.20268802 blue
# 3 -1.20068240 -0.45402013 blue
# 4 2.63407877 -0.31644247 blue
# 5 1.20716737 -0.91380874 blue
# 6 0.01067475 1.02004679 blue
# 7 0.01067475 1.02004679 blue
# 8 1.79732108 -0.04072946 blue
# 9 0.01067475 1.02004679 blue
# 10 1.79732108 -0.04072946 blue
# # ... with 30 more rows
此外,使用
outdat %>% ungroup()
删除分组。关于r - 在具有不同 nrows 的组内随机抽取 n 个样本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47645205/