r - 因子分层抽样

标签 r dataframe sampling

我有一个 1000 行的数据集,其结构如下:

     device geslacht leeftijd type1 type2
1       mob        0       53     C     3
2       tab        1       64     G     7
3        pc        1       50     G     7
4       tab        0       75     C     3
5       mob        1       54     G     7
6        pc        1       58     H     8
7        pc        1       57     A     1
8        pc        0       68     E     5
9        pc        0       66     G     7
10      mob        0       45     C     3
11      tab        1       77     E     5
12      mob        1       16     A     1

我想制作一个 80 行的样本,由 type1 = A 的 10 行、type1 = B 的 10 行组成,依此类推。有没有人可以帮助他?

最佳答案

这是我将如何使用 data.table 来解决这个问题

library(data.table)
indx <- setDT(df)[, .I[sample(.N, 10, replace = TRUE)], by = type1]$V1
df[indx]
#     device geslacht leeftijd type1 type2
#  1:    mob        0       45     C     3
#  2:    mob        0       53     C     3
#  3:    tab        0       75     C     3
#  4:    mob        0       53     C     3
#  5:    tab        0       75     C     3
#  6:    mob        0       45     C     3
#  7:    tab        0       75     C     3
#  8:    mob        0       53     C     3
#  9:    mob        0       53     C     3
# 10:    mob        0       53     C     3
# 11:    mob        1       54     G     7
#...

或者更简单的版本是
setDT(df)[, .SD[sample(.N, 10, replace = TRUE)], by = type1]

基本上,我们从 type1 的每组中的行索引中采样(带有替换 - 因为每组中的行数少于 10 行)。然后通过这个索引对数据进行子集化

dplyr 类似你可以
library(dplyr)
df %>% 
  group_by(type1) %>%
  sample_n(10, replace = TRUE)

关于r - 因子分层抽样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30097382/

相关文章:

R 如何取消shinyWidgets radioGroupButtons()中的悬停效果?

r - 多面水平发散堆积条形图,包括使用 dplyr 和 ggplot 的负值

Pandas 列标题拆分

sampling - 提高 Beaglebone Black ADC 采样率?

r - 将 dplyr slice_sample 函数转换为基础 R

r - 使用 R 中的多个观察和 mhsmm 包进行 Hmm 训练

python - 用于实现变量之间的散点图可视化的 R 等效包是什么?

regex - 从数据框中删除百分比

python - 在 DataFrame.groupby 的情况下,如何根据另一列的最大值获取列的值

python - Tensorflow 数据集 API 中的过采样功能