【发布时间】:2018-05-11 12:48:27
【问题描述】:
假设我有一个如下所示的示例数据集:
df = data.table(id = 1:100,group=rep(c('a','b','c','d'),25))
我想从这组 x 个非重叠样本中获取 80 个观察值。重要的特征是每个样本的分布在每个组之间必须是均匀的。
例如:
x=20 will give a first sample of
1 a
5 b
15 c
28 d
这是一个非常方便的例子,但它也必须适用于不太方便的情况(例如当 x=7 时)。
我的第一次尝试是使用 split,像这样:
df_split = split(df, as.numeric(as.factor(df$id)) %% 7)
这就是我想要的,只是它不会从每个组中统一挑选!
【问题讨论】:
-
这四个观察结果如何构成“80 个观察结果......在 [20] 个独立样本中”的“第一个样本”?
-
每个 'id' 只能出现在 1 个样本中,因此每个样本都包含唯一的 ids
-
如果每个 id 只能出现在 1 个样本中,那么每个样本的结果都依赖于之前的样本,因此样本不是独立的。
-
您的描述似乎要求 7 个不重叠的样本,总共包含 80 个观察结果
-
你说得对,我从描述中删除了“独立”这个词。
标签: r data.table sample