【发布时间】:2014-07-15 20:57:16
【问题描述】:
我正在尝试根据独特的治疗组合分配图。
以下代码将生成我要创建的数据工作表:
mom_id = rep(1:20, each=120)
species = c(
rep("dryoar",1200),
rep("dryola",1200)
)
soil = rep(
c("C","S"), 600
)
light = rep(
c(
rep("G",2), rep("U",2)
),300
)
soil_light = paste(soil, light, sep="_")
random_numbers = rnorm(2400) #for within plot randomization
master = data.frame(species, mom_id, soil, light, soil_light, random_numbers)
这将创建一个如下所示的数据框
species mom_id soil light soil_light random_numbers
dryoar 1 C G C_G 0.160598163
dryoar 1 S G S_G -0.280779835
dryoar 1 C U C_U 0.457491942
dryoar 1 S U S_U 0.643139979
dryoar 1 C G C_G -0.763162649
dryoar 1 S G S_G -1.146383360
dryoar 1 C U C_U 1.415396249
dryoar 1 S U S_U 1.103691681
dryoar 1 S U S_U 1.103691681
dryoar 1 C G C_G 1.694206627
dryoar 1 S G S_G -0.767433114
dryoar 1 C U C_U -0.570996961
我想在此数据框中有一个新列 plot,它为 soil_light 列(例如 C_U)中特定 R 因子的每个外观分配一个序列号,直到重复之前的设定限制又是一个序列。
为了说明
soil_light plot
C_U 1
C_U 2
C_U 3
C_U 1
C_U 2
C_U 3
C_G 1
C_G 2
C_G 3
C_G 1
C_G 2
C_G 3
我正在寻找的解决方案类似于找到的解决方案 here,但我希望数字以 8 结尾,并针对出现的每个特定因素再次从 1 到 8 重复。
奖励:最终的解决方案当然是通过它们的图来唯一地识别每个治疗组合。因此,更好的结果是:
soil_light plot
C_U 1
C_G 9
S_U 17
S_G 25
C_U 2
C_G 10
S_U 18
S_G 26
. .
. .
. .
C_U 8
C_G 16
S_U 24
S_G 32
每个唯一因素都分配有一个序列号,但每个新因素的数字序列都会发生变化。在上面给出的示例中,1:8 将保留给因子 C_U,9:16 保留给 C_G,17:24 保留给 S_U,25:32 保留给 S_G。
【问题讨论】:
标签: r