将分层变量添加到 R 中的数据框

Adding stratified variable to a dataframe in R

我有一些数据想根据组分成 4 等份。

我的数据框如下所示:

X Group
1 1
2 1
3 1
4 1
5 1
6 1
7 2
8 2
9 3
10 3
11 3
12 3
13 3
14 3
15 3
16 3

现在我考虑添加第三列来标记哪些数据属于哪个拆分,如下所示:

X Group Split
1 1 1
2 1 3
3 1 2
4 1 4
5 1 4
6 1 2
7 2 3
8 2 1
9 3 1
10 3 2
11 3 3
12 3 4
13 3 1
14 3 2
15 3 3
16 3 4

我不需要实际拆分数据集,因为数据是视频,我只需要标记(哪个人)必须如何观看它们。

我知道如何生成随机数,但我需要将它们分层到组中。

我知道如何获得分层样本,但这不是我想要的,因为我想以分层方式分发所有数据(在本例中为视频)。

你能帮我实现这个目标吗?

谢谢!

编辑:我将示例更改为大小不等的组。

您可以使用 dplyr::group_by() 轻松地进行此类分层操作:

library(tidyverse)

df <- data.frame(
    X = 1:12,
    Group = c(rep(1,4), rep(2,4), rep(3,4))
)

df %>%
  group_by(Group) %>%
  mutate(Split = sample(seq_along(X), size = n(), replace = FALSE) %% 4 + 1) %>% 
  ungroup()