【问题标题】:Determine which element is max, through ddply [duplicate]通过 ddply [重复] 确定哪个元素是最大的
【发布时间】:2012-05-01 11:35:13
【问题描述】:

我有一个包含 ID 变量、时间点和响应值的数据框。我正在使用一些旧代码,它使用 ddply 来计算每个 ID 变量的最大平均值(即每组中响应最高的时间点):

grp <- rep(c("a", "b"), each=6)
t <- rep(1:2, each=3, len=12)
y <- rnorm(length(t))
df <- data.frame(grp=factor(grp), t=t, y=y)
meanY <- ddply(df, .(grp, t), function(x) mean(x$y))
maxMeanY <- ddply(meanY, .(grp), function(x) max(x$V1))

我现在决定我还想知道每个最大平均值对应的时间值:

maxTimes
>   grp  t V1
 1    a  2 0.0534
 2    b  1 0.6015

即告诉我,对于 a 组,t2 的平均值最高,但对于 b 组,t1 的平均值最高。

最简单的方法是什么?

【问题讨论】:

    标签: r plyr


    【解决方案1】:
    ddply(meanY, .(grp), summarise, max=max(V1), where=t[which.max(V1)])
    

    【讨论】:

      【解决方案2】:

      我认为这可能会给你你想要的,但可能有更好的方法:

      maxMeanY <- ddply(meanY, .(grp), function(x)c( max(x$V1), x[which.max(x$V1), 2]))
      

      【讨论】:

      • 我认为这个答案毕竟行不通。如果不是,请告诉我们。
      猜你喜欢
      • 2010-11-03
      • 2021-01-20
      • 1970-01-01
      • 2014-06-19
      • 2012-10-13
      • 2018-11-22
      • 1970-01-01
      • 2021-11-12
      • 2017-02-13
      相关资源
      最近更新 更多