随机化 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

但我需要 set1ID 中的 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不能重复成IDset1 对控制这 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