- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图以分组的方式将采样函数应用于数据框,如果组大小小于 n,它应该从每个组或所有组成员中采样 n 个样本。
使用dplyr,我第一次尝试
library(dplyr)
mtcars %>% group_by(cyl) %>% sample_n(2)
mtcars %>% group_by(cyl) %>% sample_n(8)
Error: `size` must be less or equal than 7 (size of data),
set `replace` = TRUE to use sampling with replacement
sample_n_or_all <- function(tbl, n) {
if (nrow(tbl) < n)return(tbl)
sample_n(tbl, n)
}
mtcars %>% group_by(cyl) %>% sample_n_or_all(8)
)会产生相同的错误。
最佳答案
我们可以检查组中的行数并将值传递给 sample_n
因此。
library(dplyr)
n <- 8
temp <- mtcars %>% group_by(cyl) %>% sample_n(if(n() < n) n() else n)
temp
# mpg cyl disp hp drat wt qsec vs am gear carb
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
# 1 21.4 4 121 109 4.11 2.78 18.6 1 1 4 2
# 2 27.3 4 79 66 4.08 1.94 18.9 1 1 4 1
# 3 24.4 4 147. 62 3.69 3.19 20 1 0 4 2
# 4 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1
# 5 26 4 120. 91 4.43 2.14 16.7 0 1 5 2
# 6 33.9 4 71.1 65 4.22 1.84 19.9 1 1 4 1
# 7 30.4 4 75.7 52 4.93 1.62 18.5 1 1 4 2
# 8 30.4 4 95.1 113 3.77 1.51 16.9 1 1 5 2
# 9 21 6 160 110 3.9 2.62 16.5 0 1 4 4
#10 17.8 6 168. 123 3.92 3.44 18.9 1 0 4 4
# … with 13 more rows
table(temp$cyl)
#4 6 8
#8 7 8
table(mtcars$cyl)
# 4 6 8
#11 7 14
关于r - 自定义分组 dplyr 函数 (sample_n),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55676368/
这是来自 R 中 dplyr 的“sample_n”。 https://dplyr.tidyverse.org/reference/sample.html 为了可重复性,我应该放置一个种子,以便其他人
我试图从数据集中抽取一个分层样本,其中存在一个变量,表明每组的样本量应该有多大。 library(dplyr) # example data df % do.call(what = rbi
我想根据单独数据框中的索引给出的一组权重随机抽样月份,但索引会根据一些分类变量而变化。 下面是一个示例问题: require(dplyr) sim.size % group_by(category
我试图以分组的方式将采样函数应用于数据框,如果组大小小于 n,它应该从每个组或所有组成员中采样 n 个样本。 使用dplyr,我第一次尝试 library(dplyr) mtcars %>% grou
根据dplyr帮助文件 sample_n函数对每组采样固定数量。 当我运行以下代码时,我希望每个 tobgp 和 alcgp 组合有两个样本,因此总共有 32 (4*4*2) 行。但是只返回两行。 b
我有以下分组数据框,我想使用函数 dplyr::sample_n从该数据框中为每个组提取行。我想使用分组变量的值NDG在每个组中作为要从每个组中提取的行数。 > dg.tmp dg % d
我是一名优秀的程序员,十分优秀!