在ddply中使用summary来根据一列的max()获取整行

时间:2012-08-21 21:46:05

标签: r plyr

DF1

  primer timepoints        mean          sde
    Acan          0   1.0000000 0.000000e+00
    Acan         20   0.8758265 7.856192e-02
    Acan         40   1.0575400 4.680159e-02
    Acan         60   1.2399106 2.238616e-01
    Acan        120   1.1710685 2.085558e-02
    Acan        240   1.6430670           NA
    Acan        360   1.7747940           NA

我想要的是平均值的最大值(对于任何这些时间点)w /它是相应的sde。

   ## this will only get me the mean obviously 
   x <- ddply(x, .(primer), summarize, max = max(mean)) 

 primer        max
   Acan   1.774794


## if I were to do this I would obviously not have just the maximum values 
   x <- ddply(x. .(primer,sde), summarize, max = max(mean))
我有一个想法可能是在df中包含时间点,然后匹配两个数据帧以获得一列sdes。然后cbind到df w /只意味着。

但我觉得好像有一个更简单的方法来做这个w / ddply

1 个答案:

答案 0 :(得分:5)

如果您不必使用摘要:

ddply(x, .(primer), function(DF) DF[DF$mean == max(DF$mean),])