【发布时间】:2016-10-03 21:14:14
【问题描述】:
我需要随机抽取一个以长格式排列的数据集。在我的数据集中,每个主题都有 4 个观察值,所以如果我随机抽样一行,我会随机丢失每个主题的一个或多个观察值。
这是用于说明目的的模拟数据,我的数据要大得多。
sub sex group dv1 dv2
P1 m A 0.66 0.94
P1 m B 0.98 0.26
P1 m C 0.02 0.03
P1 m D 0.60 0.30
P2 m A 0.92 0.99
P2 m B 0.82 0.09
P2 m C 0.44 0.67
P2 m D 0.53 0.80
P3 f A 0.29 0.22
P3 f B 0.46 0.20
P3 f C 0.37 0.77
P3 f D 0.76 0.54
P4 m A 0.28 0.99
P4 m B 0.16 0.57
P4 m C 0.46 0.75
P4 m D 0.28 0.21
在这个例子中,我需要随机选择 2 个男性。例如,我尝试使用打包的 dplyr(见下文),但如果我给出 2 个样本,它只会给我 2 行 sex="m" 和 2 行 sex="f"。总共有 4 个随机选择的行。我需要它做的是给我 8 行,其中 4 来自一个男性,4 个来自另一个。将分组参数更改为sub 不起作用,因为它在组中只有 2 个级别(实际上,它可以在这个玩具示例中工作,因为每个子有 4 个级别,但请注意,我选择像来自更大数据集的 50 个样本)。此外,它只会为每个 sub 给我 2 个随机行,这不是我需要的。
library(dplyr)
subset <- data %>%
group_by(sex) %>%
sample_n(2)
请不要建议将日期重塑为宽格式并在那里采样,因为我知道我可以做到。我相信一定有办法以长格式进行采样。
【问题讨论】:
-
如果选择了 P1,您想选择所有 P1 观察值,还是只选择 P1 中的一个观察值?
-
所有 P1 观测值。我的解决方案的问题是每个子只得到一个观察结果,我想保留所有 4 个。
标签: r sampling random-sample