【发布时间】:2017-09-15 13:46:37
【问题描述】:
我有一个如下所示的数据集:
d=data.frame(ID = rep(1:7,1),
Group1=c('A','C','B','C','C','A','B'),
Group2=c('B','A','C','B','B','B','D'))
ID Group1 Group2
1 A B
2 C A
3 B C
4 C B
5 C B
6 A B
7 B D
我需要根据 Group1 随机抽取 1 个案例。 Group1 有三种类型:A、B、C。我需要从每种类型中抽取 1 个样本。
同时,该样本的Group2类型在样本的Group2中不重复。
例如,如果我只基于 Group1 进行采样:
dsample=d %>% group_by(Group1) %>%sample_n(size=1)
那么示例如下所示:
ID Group1 Group2
1 A B
7 B D
4 C B
在样本的Group2中,B在样本中重复出现。为避免Group2类型的重复,在按照Group1类型进行采样时,采样时应选择ID=2,这样样本应如下所示:
ID Group1 Group2
1 A B
7 B D
2 C A
【问题讨论】:
-
你能描述更多你想要什么吗?...为什么你不使用这个:
sample(d$Group1, size=1) -
如果数据中没有
C A,而只有C B怎么办?你会允许 B 在第 2 组中重复吗? -
不,那么应该只随机选择或丢弃 C B 的一种情况,以保持 Group2 中的唯一类型。
标签: r dplyr conditional