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