将分层变量添加到 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()
我有一些数据想根据组分成 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()