在 R 中生成实验设计数据
Generate Experimental design Data in R
我有一个随机块设计实验,我们想在其中测试 10 种处理方法(8 种基因型 + 2 种对照)。
结构如下:
9 个站点,每个站点中有 4 个块(重复),
在每个区块内,有 10 个地块,
在每个地块中,有 144 个个体具有给定的处理(基因型)。
我想生成如下数据集:
注意:对每个区块内的地块进行随机分配。
Site <- LETTERS[1:6]
Block <- LETTERS[1:4] ## For each Site
Plot <- paste(rep("P",10),seq(1,10,1),sep="_") ## For each Block
Trt <- c(LETTERS[1:8],rep("control",2)) ## 10 Treatments within each block
id <- seq(1,144,1) ## for each Plot
observation <- runif(n=144,min=1, max=4) ## repeated for each treatment, each block,and each site.
data.frame(Site,Block,Plot,Trt,id,observation)
知道这段代码会报错,id'like to have,for the same Site, all block levels, for the same block, all plot levels and their coresponding treatments, and for the same plot all id Tags以及他们相应的观察结果。
非常感谢
我想你可能正在寻找 expand.grid
:
Site <- LETTERS[1:6]
Block <- LETTERS[1:4] ## For each Site
Plot <- paste(rep("P",10),seq(1,10,1),sep="_") ## For each Block
data <- expand.grid(Site = Site, Block = Block, Plot = Plot)
data$Trt <- sample(c(LETTERS[1:8],paste0("control",1:2)), nrow(data), replace = TRUE)
data
我有一个随机块设计实验,我们想在其中测试 10 种处理方法(8 种基因型 + 2 种对照)。
结构如下:
9 个站点,每个站点中有 4 个块(重复), 在每个区块内,有 10 个地块, 在每个地块中,有 144 个个体具有给定的处理(基因型)。
我想生成如下数据集:
注意:对每个区块内的地块进行随机分配。
Site <- LETTERS[1:6]
Block <- LETTERS[1:4] ## For each Site
Plot <- paste(rep("P",10),seq(1,10,1),sep="_") ## For each Block
Trt <- c(LETTERS[1:8],rep("control",2)) ## 10 Treatments within each block
id <- seq(1,144,1) ## for each Plot
observation <- runif(n=144,min=1, max=4) ## repeated for each treatment, each block,and each site.
data.frame(Site,Block,Plot,Trt,id,observation)
知道这段代码会报错,id'like to have,for the same Site, all block levels, for the same block, all plot levels and their coresponding treatments, and for the same plot all id Tags以及他们相应的观察结果。
非常感谢
我想你可能正在寻找 expand.grid
:
Site <- LETTERS[1:6]
Block <- LETTERS[1:4] ## For each Site
Plot <- paste(rep("P",10),seq(1,10,1),sep="_") ## For each Block
data <- expand.grid(Site = Site, Block = Block, Plot = Plot)
data$Trt <- sample(c(LETTERS[1:8],paste0("control",1:2)), nrow(data), replace = TRUE)
data