1

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が最も高い平均を示しました。

これを取得する最も簡単な方法は何ですか?

4

2 に答える 2

4
ddply(meanY, .(grp), summarise, max=max(V1), where=t[which.max(V1)])
于 2012-04-20T02:22:09.893 に答える
3

私はこれがあなたが望むものをあなたに与えるかもしれないと思いますが、より良い方法があるかもしれません:

maxMeanY <- ddply(meanY, .(grp), function(x)c( max(x$V1), x[which.max(x$V1), 2]))
于 2012-04-19T21:35:20.193 に答える