【发布时间】:2021-02-23 10:44:47
【问题描述】:
我有一个包含 2 个分组列 V1 和 V2 的数据框。我想为 V1 中的每个不同值准确采样 n = 4 个元素,并确保对 V2 中每个不同元素的最小 m = 1 进行采样。
library(tidyverse)
set.seed(1)
df = data.frame(
V1 = c(rep("A",6), rep("B",6)),
V2 = c("C","C","D","D","E","E","F","F","G","G","H","H"),
V3 = rnorm(12)
)
df
V1 V2 V3
1 A C -0.6264538
2 A C 0.1836433
3 A D -0.8356286
4 A D 1.5952808
5 A E 0.3295078
6 A E -0.8204684
7 B F 0.4874291
8 B F 0.7383247
9 B G 0.5757814
10 B G -0.3053884
11 B H 1.5117812
12 B H 0.3898432
我想要的输出是例如...
V1 V2 V3
1 A C -0.626
2 A D -0.836
3 A E -0.820
4 A E 0.329
5 B F 0.487
6 B G 0.576
7 B G -0.305
8 B H 0.390
我不知道如何生成这个输出。当我按 V1 和 V2 分组时,我会为 V1 中的每个不同值得到 n = 3 个元素。
df %>%
group_by(V1,V2) %>%
sample_n(1)
V1 V2 V3
1 A C -0.626
2 A D -0.836
3 A E -0.820
4 B F 0.487
5 B G 0.576
6 B H 0.390
“splitstackshape”或“采样”包没有帮助。
【问题讨论】: