【发布时间】:2018-10-24 11:07:48
【问题描述】:
如何随机抽样,例如data.table 中的三个组,以便结果包含三个组,其中包含原始 data.table 中的所有行?
library(data.table)
dat <- data.table(ids=1:20, groups=sample(x=c("A","B","C", "D", "E", "F"), 20,
replace=TRUE))
我知道如何从 data.table 中随机选择 10 行:
dat.sampl1 <- as.data.table(sapply(dat[], sample, 10))
以及如何按组采样
dat[,.SD[sample(.N, min(.N,3))], by = groups]
但是如何随机抽样组呢?所以结果应该是这样的:
ids groups
1 F
11 F
3 F
18 F
8 A
9 A
10 A
17 A
19 A
12 E
14 E
16 E
【问题讨论】:
-
我不明白你在问什么。如果您要使用
sample(),请使用set.seed(),这样您的数据是可重现的。看起来你有一些限制,所以它不是一个简单的随机样本。这可能是某种条件抽样吗?
标签: r data.table