gpt4 book ai didi

r - 因子分层抽样

转载 作者:行者123 更新时间:2023-12-04 09:28:59 24 4
gpt4 key购买 nike

我有一个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com