R 基于另一列对数据帧中的一列求平均值——全部放入一个数组
x 我想做两件事。平均和2。每个时间点的每个初级读物的foldInduction的stderr,所以我想要的是一个最终的数组,其中名称(数组)是时间点,数组本身是方法。还试图将此与标准结合起来 所以对于底漆,“Acan”的意思是这样的R 基于另一列对数据帧中的一列求平均值——全部放入一个数组,r,R,x 我想做两件事。平均和2。每个时间点的每个初级读物的foldInduction的stderr,所以我想要的是一个最终的数组,其中名称(数组)是时间点,数组本身是方法。还试图将此与标准结合起来 所以对于底漆,“Acan”的意思是这样的 primer timepoints foldInduction Acan 0 1.0000000 Acan 20 0.6779533 Acan 20 1.9734277
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
我想tapply可能会为这个工作。这就是我一直在做的
0 20
1.0 1.325
stderr我预计将有大量答案。沿着这些思路,已经有100多个不同的问题,经常比较许多解决方案的相对时间和优点。这里有一个这样的例子。我建议您找到一个适合您的框架并坚持使用它
这里有一个使用plyr
和summary
的解决方案
首先,重新创建数据:
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)
我没有百分之百地理解你最后一点关于命名向量位的内容,但希望这能告诉你如何计算你需要的答案,你可以从那里把数据转换成适当的格式
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)
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