X
primer timepoints foldInduction
Acan 0 1.0000000
Acan 20 0.6779533
Acan 20 1.9734277
Fos 40 21.3731640
Fos 60 1.8517668
Fos 40 118.2970756
Acan 0 1.0000000
Fos 60 17.5241529
我希望在每个时间点为每个引物提供2个1. mean和2. stderr of foldInduction所以我想要的是一个最终数组,其中名称(数组)是时间点,数组本身就是手段。还尝试合并这个w / stderrs。
所以对于引物'Acan'意味着像这样的
0 20
1.0 1.325
我认为tapply可能会为此工作。所以这就是我一直在做的事情
stderr <- function(x){sd(x,na.rm=TRUE)/sqrt(length(x))}
means <- tapply(x$foldInductions,factor(as.numeric(x$timepoints)),mean,na.rm=T)
stderrs <- tapply(x$foldInductions,factor(as.numeric(x$timepoints)),stderr)
此外,对于给定时间点,可能没有相同数量的foldInductions平均值,但我不认为这应该是一个问题。
如果你可以帮助我为一个很棒的引物创建这个数组。
答案 0 :(得分:0)
我预见到即将发生的冲击。在这些相同的路线上有100多个不同的问题,通常比较许多解决方案的相对时间和优点。这是一个question and answer。我建议你找到一个适合你的框架并坚持下去。
以下是使用plyr
和summarize
的解决方案。
首先,重新创建您的数据:
x <- read.table(text = "primer exptname concentrate timepoints replicate day realConc foldInduction
Acan 0hr 55mM 0 b1 011311 0.05875824 1.0000000
Acan KClpulse-5min 55mM 20 b1 011311 0.03983534 0.6779533
Acan KClpulse-5min 55mM 20 b1 011311 0.11595514 1.9734277
Fos KClpulse-5min 55mM 40 b1 011311 0.11964684 21.3731640
Fos KClpulse-5min 55mM 60 b1 011311 0.01036618 1.8517668
Fos KClpulse-5min 55mM 40 b1 011311 0.66222632 118.2970756
Acan 0hr 55mM 0 b2 011411 0.05681637 1.0000000
Fos KClpulse-5min 55mM 60 b2 011411 0.23492697 17.5241529", header = TRUE)
然后用ddply
魔术做一些小组:
require(plyr)
ddply(x, .(primer, timepoints), summarize,
mean = mean(foldInduction, na.rm = TRUE),
sde = sqrt(var(foldInduction, na.rm = TRUE)/length(foldInduction))
)
primer timepoints mean sde
1 Acan 0 1.00000 0.0000000
2 Acan 20 1.32569 0.6477372
3 Fos 40 69.83512 48.4619558
4 Fos 60 9.68796 7.8361931
我没有100%跟踪你关于命名向量位的最后一点,但希望这能告诉你如何计算你需要的答案,你可以从那里将数据变成适当的格式。