随机化 R 中的两组数字,组间不重复值
Randomize two sets of number in R, not repeating values between groups
我有这个文件:
ID
1
1
1
3
3
3
7
7
7
我需要随机分配两组,(1,2,3) 和 (5,15,25)。
为此我使用了这个:
set.seed(1109201)
df %>%
group_by(ID) %>%
dplyr::mutate(set1=sample(c(1,2,3), size=n(), replace=F),set2=sample(c(5,15,25), size=n(), replace=F))
我得到了这个:
ID set1 set2
1 1 15
3 1 25
7 1 25
1 2 5
3 2 15
7 2 5
1 3 25
3 3 5
7 3 15
但我需要 set1
和 ID
中的 set2
不同的值,如下所示:
ID set1 set2
1 1 15
3 1 25
7 1 5
1 2 5
3 2 15
7 2 25
1 3 25
3 3 5
7 3 15
Set2
不能重复成ID
或set1
对控制这 2 组有什么建议吗?
将您的 dplyr
代码更改为以下内容。使用“group_by()”步骤将仅在组内进行第二次采样。
set.seed(1109201)
df %>%
group_by(ID) %>%
dplyr::mutate(set1=sample(c(1,2,3), size=n(), replace=F)) %>%
group_by(set1) %>%
mutate(set2=sample(c(5,15,25), size=n(), replace=F)) %>%
ungroup()
# A tibble: 8 x 3
ID set1 set2
<dbl> <dbl> <dbl>
1 1 2 15
2 1 3 5
3 1 1 25
4 3 3 15
5 3 2 5
6 3 1 5
7 7 2 25
8 7 3 25
我有这个文件:
ID
1
1
1
3
3
3
7
7
7
我需要随机分配两组,(1,2,3) 和 (5,15,25)。
为此我使用了这个:
set.seed(1109201)
df %>%
group_by(ID) %>%
dplyr::mutate(set1=sample(c(1,2,3), size=n(), replace=F),set2=sample(c(5,15,25), size=n(), replace=F))
我得到了这个:
ID set1 set2
1 1 15
3 1 25
7 1 25
1 2 5
3 2 15
7 2 5
1 3 25
3 3 5
7 3 15
但我需要 set1
和 ID
中的 set2
不同的值,如下所示:
ID set1 set2
1 1 15
3 1 25
7 1 5
1 2 5
3 2 15
7 2 25
1 3 25
3 3 5
7 3 15
Set2
不能重复成ID
或set1
对控制这 2 组有什么建议吗?
将您的 dplyr
代码更改为以下内容。使用“group_by()”步骤将仅在组内进行第二次采样。
set.seed(1109201)
df %>%
group_by(ID) %>%
dplyr::mutate(set1=sample(c(1,2,3), size=n(), replace=F)) %>%
group_by(set1) %>%
mutate(set2=sample(c(5,15,25), size=n(), replace=F)) %>%
ungroup()
# A tibble: 8 x 3
ID set1 set2
<dbl> <dbl> <dbl>
1 1 2 15
2 1 3 5
3 1 1 25
4 3 3 15
5 3 2 5
6 3 1 5
7 7 2 25
8 7 3 25