所以我有一个数据帧,它有两个读数(组成数据)的Plate ID,Time Point,Substrate和Mean Values:
Plate_ID Day Name 590_Mean 590_SD 750_Mean 750_Mean
MCBA15 001 0 Cyclodextrin 0.217 0.012 0.161 0.012
MCBA15 001 1 Cyclodextrin 0.257 0.012 0.171 0.012
MCBA15 001 3 Cyclodextrin 0.217 0.012 0.161 0.012
...
MCBA15 001 10 Cyclodextrin 0.217 0.012 0.161 0.012
MCBA15 005 0 Cyclodextrin 0.217 0.012 0.161 0.012
MCBA15 005 1 Cyclodextrin 0.257 0.012 0.171 0.012
MCBA15 005 3 Cyclodextrin 0.217 0.012 0.161 0.012
...
MCBA15 005 10 Cyclodextrin 0.217 0.012 0.161 0.012
MCBA15 001 0 Lactose 0.217 0.012 0.161 0.012
MCBA15 001 1 Lactose 0.257 0.012 0.171 0.012
MCBA15 001 3 Lactose 0.217 0.012 0.161 0.012
...
MCBA15 001 10 Lactose 0.217 0.012 0.161 0.012
MCBA15 005 0 Lactose 0.217 0.012 0.161 0.012
MCBA15 005 1 Lactose 0.257 0.012 0.171 0.012
MCBA15 005 3 Lactose 0.217 0.012 0.161 0.012
...
MCBA15 005 10 Lactose 0.217 0.012 0.161 0.012
每个Plate_ID有32个底物,每个平板有7天读数。
理想情况下,我想绘制10天内相同时间序列的590和750平均值(7个读数),标准偏差条(时间间隔= 1天)。
我能够生成一个这样的图形,但这是进入并对数据进行排序。然后我采取了以下方法:
library('Hmisc')
x <- sortbiolog$Day[1:7]
y <- sortbiolog$X750_Mean[1:7]
sd <- sortbiolog$X750_SD[1:7]
plot(x, y, type = "b", ylim = c(0,.3))
with(
data = sortbiolog,
expr = errbar(x, y, y + sd, y - sd, add = T, pch =1, cap = .01), main = "?-Cyclodextrin Substrate for MCBA15 001")
par(new=TRUE)
a <- sortbiolog$Day[1:7]
b <- sortbiolog$X590_Mean[1:7]
ab_sd <- sortbiolog$X590_SD[1:7]
plot(a, b, type = "b", ylim = c(0,.3))
with(
data = sortbiolog,
expr = errbar(a, b, b + ab_sd, b - ab_sd, add = T, pch =1, cap = .01, col="red", axis=FALSE))
legend('topright', legend=c("Mean 750", "Mean 590"), text.col=c("black", "red"))
但是,我想知道是否有办法循环数据并根据数据创建这些图像。
答案 0 :(得分:0)
dat <- read.table(header = TRUE, text="Plate_ID Day Name 590_Mean 590_SD 750_Mean 750_SD
'MCBA15 001' 0 Cyclodextrin 0.217 0.012 0.161 0.012
'MCBA15 001' 1 Cyclodextrin 0.257 0.012 0.171 0.012
'MCBA15 001' 2 Cyclodextrin 0.257 0.012 0.171 0.012
'MCBA15 001' 3 Cyclodextrin 0.217 0.012 0.161 0.012
'MCBA15 001' 5 Cyclodextrin 0.257 0.012 0.171 0.012
'MCBA15 001' 7 Cyclodextrin 0.257 0.012 0.171 0.012
'MCBA15 001' 10 Cyclodextrin 0.217 0.012 0.161 0.012
'MCBA15 005' 0 Cyclodextrin 0.217 0.012 0.161 0.012
'MCBA15 005' 1 Cyclodextrin 0.257 0.012 0.171 0.012
'MCBA15 005' 2 Cyclodextrin 0.257 0.012 0.171 0.012
'MCBA15 005' 3 Cyclodextrin 0.217 0.012 0.161 0.012
'MCBA15 005' 5 Cyclodextrin 0.257 0.012 0.171 0.012
'MCBA15 005' 7 Cyclodextrin 0.217 0.012 0.161 0.012
'MCBA15 005' 10 Cyclodextrin 0.217 0.012 0.161 0.012
'MCBA15 001' 0 Lactose 0.217 0.012 0.161 0.012
'MCBA15 001' 1 Lactose 0.257 0.012 0.171 0.012
'MCBA15 001' 2 Lactose 0.217 0.012 0.161 0.012
'MCBA15 001' 3 Lactose 0.217 0.012 0.161 0.012
'MCBA15 001' 5 Lactose 0.217 0.012 0.161 0.012
'MCBA15 001' 7 Lactose 0.217 0.012 0.161 0.012
'MCBA15 001' 10 Lactose 0.217 0.012 0.161 0.012
'MCBA15 005' 0 Lactose 0.217 0.012 0.161 0.012
'MCBA15 005' 1 Lactose 0.257 0.012 0.171 0.012
'MCBA15 005' 2 Lactose 0.257 0.012 0.171 0.012
'MCBA15 005' 3 Lactose 0.217 0.012 0.161 0.012
'MCBA15 005' 5 Lactose 0.257 0.012 0.171 0.012
'MCBA15 005' 7 Lactose 0.217 0.012 0.161 0.012
'MCBA15 005' 10 Lactose 0.217 0.012 0.161 0.012")
这个函数中有一些东西是不必要的(比如索引)但是我想从你的代码中尽可能少地改变,以便向你展示一般方法。所以这里是你的代码包含在一个函数中,它接受一个数据帧。
f <- function(sortbiolog) {
require('Hmisc')
x <- sortbiolog$Day[1:7]
y <- sortbiolog$X750_Mean[1:7]
sd <- sortbiolog$X750_SD[1:7]
plot(x, y, type = "b", ylim = c(0,.3))
with(
data = sortbiolog,
expr = errbar(x, y, y + sd, y - sd, add = T, pch =1, cap = .01), main = "?-Cyclodextrin Substrate for MCBA15 001")
par(new=TRUE)
a <- sortbiolog$Day[1:7]
b <- sortbiolog$X590_Mean[1:7]
ab_sd <- sortbiolog$X590_SD[1:7]
plot(a, b, type = "b", ylim = c(0,.3), ann = FALSE)
with(
data = sortbiolog,
expr = errbar(a, b, b + ab_sd, b - ab_sd, add = T, pch =1, cap = .01, col="red"))
legend('bottomright', legend=c("Mean 750", "Mean 590"), text.col=c("black", "red"))
}
因此,您仍然可以在f(dat[1:7, ])
等完整数据上使用此功能,但您可以根据Plate_ID
和{{1}将原始数据拆分为数据框列表,而不是使用索引进行愚弄。 }:
Name
然后将该函数应用于列表:
sp <- split(dat, with(dat, interaction(Plate_ID, Name)))
sapply(sp, dim)
# MCBA15 001.Cyclodextrin MCBA15 005.Cyclodextrin MCBA15 001.Lactose MCBA15 005.Lactose
# [1,] 7 7 7 7
# [2,] 7 7 7 7
给我