【问题标题】:using summarize in ddply to get entire row based on max() of one column在 ddply 中使用 summarise 根据一列的 max() 获取整行
【发布时间】:2012-08-21 21:46:04
【问题描述】:

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/ only 意味着。

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

【问题讨论】:

  • 如果你不用summariseddply(x, .(primer), function(DF) DF[DF$mean == max(DF$mean),])
  • 使用您的示例数据,很容易拉出包含最大平均值的行:df1[df1$mean == max(df1$mean),]。但也许您还有其他引物名称,需要按这些名称进行分组?
  • 是的,我愿意,但这很好用。我只需要单个值的底漆,所以我认为这很好
  • @Justin 你或 OP 可以将此作为答案发布,这样这个问题就不会因为没有答案而悬而未决吗?

标签: r plyr


【解决方案1】:

如果您不必使用摘要:

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

【讨论】:

    猜你喜欢
    • 2020-12-17
    • 2023-03-09
    • 2019-12-07
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 2012-06-02
    • 1970-01-01
    • 2016-02-25
    相关资源
    最近更新 更多