R 基于另一列对数据帧中的一列求平均值——全部放入一个数组

R 基于另一列对数据帧中的一列求平均值——全部放入一个数组,r,R,x 我想做两件事。平均和2。每个时间点的每个初级读物的foldInduction的stderr,所以我想要的是一个最终的数组,其中名称(数组)是时间点,数组本身是方法。还试图将此与标准结合起来 所以对于底漆,“Acan”的意思是这样的 primer timepoints foldInduction Acan 0 1.0000000 Acan 20 0.6779533 Acan 20 1.9734277

x

我想做两件事。平均和2。每个时间点的每个初级读物的foldInduction的stderr,所以我想要的是一个最终的数组,其中名称(数组)是时间点,数组本身是方法。还试图将此与标准结合起来

所以对于底漆,“Acan”的意思是这样的

 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