将治疗随机分配给半数的小组

问题描述 投票:3回答:1

我正在为一项实验随机分配处理。我有四个站点(站点1,......站点4),其中12个实验单位(如1......12)重复四次(如1......4)。对于每个重复,我已经随机分配了三个处理中的一个(例如,rt1 ...rt3)。

trt2应该总是 "y",而我想随机分配 "y "到trt1的一半,"n "到trt1的另一半,然后做同样的trt3。每个Replicate应该给我:trt2有4个 "y",trt1有2个 "n",trt3有3个 "n"。

我的数据是这样的。

Site      Experimental unit     Replicate   Treatment        SecondTreatmentAssign (y/n)
Site1              1                1         trt1  
Site1              2                1         trt2  
Site1              3                1         trt3  
Site1              4                1         trt3  
Site1              5                1         trt1  
Site1              6                1         trt2  
Site1              7                1         trt3  
Site1              8                1         trt2  
Site1              9                1         trt1  
Site1              10               1         trt1  
Site1              11               1         trt3  
Site1              12               1         trt2  
Site1              1                2         trt2  
Site1              2                2         trt3  
Site1              3                2         trt1  
Site1              4                2         trt2  
Site1              5                2         trt1  
Site1              6                2         trt3  
Site1              7                2         trt2  
Site1              8                2         trt2         
Site1              9                2         trt1  
Site1              10               2         trt2  
Site1              11               2         trt1  
Site1              12               2         trt3      
Site1              1                3         trt2  
Site1              2                3         trt1  
Site1              3                3         trt3  
Site1              4                3         trt3  
Site1              5                3         trt2  
Site1              6                3         trt1  
Site1              7                3         trt3  
Site1              8                3         trt2  
Site1              9                3         trt1  
Site1              10               3         trt1  
Site1              11               3         trt3  
Site1              12               3         trt2  
Site1              1                4         trt3  
Site1              2                4         trt2  
Site1              3                4         trt1  
Site1              4                4         trt3  
Site1              5                4         trt2  
Site1              6                4         trt1  
Site1              7                4         trt3  
Site1              8                4         trt1  
Site1              9                4         trt2  
Site1              10               4         trt1  
Site1              11               4         trt2  
Site1              12               4         trt3
  .                .                .           .
  .                .                .           .
  .                .                .           .
Site4              12               4         trt1  

我希望能用一种方式来完成这个任务 让这些分配回到数据框架中 这样我就不用手动移动任何东西了。我在编程方面还是个新手,不知道如何实现这一点。

谢谢你!我正在随机地将这些数据分配回数据框架中,这样我就不用手动移动任何东西了,我对编程还很陌生,不知道如何实现这一点。

r random experimental-design
1个回答
3
投票

我会这样做。

library(dplyr) 
data %>% 
  arrange(runif(n())) %>% # randomize the order
  group_by(Site, Replicate, Treatment) %>% # group
  mutate(
    Treat_2 = case_when(
      Treatment == "trt2" ~ "y", # trt2 gets 'y'
      row_number() <= n() / 2 ~ "y", # others in the first half get "y"
      TRUE ~ "n" # others in the second half get "n"
  )) %>%
  arrange(Site, Replicate, `Experimental unit`) ## return to original order
© www.soinside.com 2019 - 2024. All rights reserved.