R Tidyverse-按ID随机化

R Tidyverse-按ID随机化,r,tidyverse,R,Tidyverse,我有一个像这样的df: id <- c(1,1,2,2,3,3,4,4,5,5) v1 <- c(3,1,2,3,4,5,6,1,5,4) pos <- c(1,2,1,2,1,2,1,2,1,2) df <- data.frame(id,v1,pos) 上面的示例和生成的df,id和pos保持原始创建状态,v1随机化 谢谢 您要找的是sample吗 df %>% group_by(id) %>% mutate(v1 = sample(v

我有一个像这样的df:

id <- c(1,1,2,2,3,3,4,4,5,5)
v1 <- c(3,1,2,3,4,5,6,1,5,4)
pos <- c(1,2,1,2,1,2,1,2,1,2)

df <- data.frame(id,v1,pos)
上面的示例和生成的df,id和pos保持原始创建状态,v1随机化


谢谢

您要找的是
sample

df %>% 
    group_by(id) %>%
    mutate(v1 = sample(v1, size = length(v1)))
# A tibble: 10 x 3
# Groups:   id [5]
      id    v1   pos
   <dbl> <dbl> <dbl>
 1     1     3     1
 2     1     1     2
 3     2     3     1
 4     2     2     2
 5     3     4     1
 6     3     5     2
 7     4     1     1
 8     4     6     2
 9     5     5     1
10     5     4     2
df%>%
分组依据(id)%>%
变异(v1=样本(v1,大小=长度(v1)))
#一个tibble:10x3
#组别:id[5]
id v1位置
1     1     3     1
2     1     1     2
3     2     3     1
4     2     2     2
5     3     4     1
6     3     5     2
7     4     1     1
8     4     6     2
9     5     5     1
10     5     4     2

不完全是,我尝试了样本,但正如您在结果中看到的,v1的前两个值是5和5,实际上应该是3和1或1和3,因为我想根据Id的值进行随机化,所以基本上是根据Id进行随机化分组!是的,这就是答案!标记为已解决…可以,谢谢提醒
df %>% 
    group_by(id) %>%
    mutate(v1 = sample(v1, size = length(v1)))
# A tibble: 10 x 3
# Groups:   id [5]
      id    v1   pos
   <dbl> <dbl> <dbl>
 1     1     3     1
 2     1     1     2
 3     2     3     1
 4     2     2     2
 5     3     4     1
 6     3     5     2
 7     4     1     1
 8     4     6     2
 9     5     5     1
10     5     4     2