0

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

我想在每个时间点为每个引物做两件事 1.mean 和 2.stderr 的 foldInduction,所以我想要一个最终数组,其中 names(array) 是时间点,数组本身就是手段。还试图将其与标准错误合并。

所以对于底漆'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 数量可能不同,但我认为这应该不是问题。

如果你能帮助我为一个很棒的引物创建这个数组。

4

1 回答 1

0

我预见到答案的冲击即将到来。沿着这些相同的思路已经有 100 多个不同的问题,经常比较许多解决方案的相对时间和优点。这是一个这样的问答。我建议你找到一个适合你的框架并坚持下去。

这是使用plyrand的解决方案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% 遵循您关于命名向量位的最后一点,但希望这可以向您展示如何计算您需要的答案,并且您可以从那里将数据转换为适当的格式。

于 2012-08-21T04:06:55.800 回答