R中数据帧的约束随机化

R中数据帧的约束随机化,r,random,R,Random,我有这样一个数据框: Tem Time 10a 1 10a 2 10a 3 10a 4 20a 1 20a 2 20a 3 20a 4 10b 1 10b 2 10b 3 10b 4 20b 1 20b 2 20b 3 20b 4 现在我想做随机化以减少这样的实验误差 Tem

我有这样一个数据框:

 Tem    Time
 10a      1
 10a      2
 10a      3 
 10a      4 
 20a      1
 20a      2
 20a      3
 20a      4 
 10b      1
 10b      2
 10b      3 
 10b      4 
 20b      1
 20b      2
 20b      3
 20b      4 
现在我想做随机化以减少这样的实验误差

 Tem     Time
 10a      1
 10a      2
 10a      3 
 10a      4 
 20a      4 #( not the same sequence for Time in 10a)
 20a      2
 20a      3
 20a      1 
 #(for b, not same sequence for a in Tem)
 20b      3
 20b      1
 20b      2
 20b      4 
 10b      1 #(not the same sequence for Time in 20b)
 10b      3
 10b      2 
 10b      4 
最后,我需要将所有12个样本随机组合在一起。 我知道这很复杂。你能帮我做这个或者给我一些提示吗?提前谢谢

仅在Tem内随机化: 只有在再次对整个数据集进行采样时,才能使用tidyverse方法在组内随机采样:

library(tidyverse)
df <- data.frame(Tem = c("a", "b", "c"), Time = rep(1:4, 3)) %>% arrange(Tem, Time)

df %>% group_by(Tem) %>% sample_frac(1)
# A tibble: 12 x 2
# Groups:   Tem [3]
      Tem  Time
   <fctr> <int>
 1      a     4
 2      a     1
 3      a     2
 4      a     3
 5      b     4
 6      b     2
 7      b     3
 8      b     1
 9      c     3
10      c     2
11      c     4
12      c     1

这一个在Tem样本中的作用与第一个相同,但随后将其拆分为Tem定义的列表,并重新对名称进行采样,然后将其全部绑定在一起。这可能不是最佳解决方案。

谢谢!我对R很陌生,但我会努力理解代码。非常感谢!这正是我要找的!作为R的初学者,我只想再次感谢你!
df %>% group_by(Tem) %>% sample_frac(1) %>% 
  split(df$Tem) %>% { .[sample(names(.), length(names(.)))] } %>%
  bind_rows()
# A tibble: 12 x 2
# Groups:   tem [3]
      tem  time
   <fctr> <int>
 1      c     2
 2      c     1
 3      c     4
 4      c     3
 5      b     4
 6      b     1
 7      b     2
 8      b     3
 9      a     1
10      a     2
11      a     4
12      a     3