2012-04-19 18 views
1

我有一個包含ID變量,時間點和響應值的數據框。我使用的是使用ddply一些舊的代碼來計算每個ID變量的最大平均值(即每組最高響應的時間點):通過ddply確定哪個元素是最大值

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具有最高的平均水平。

什麼是最簡單的方法來得到這個?

回答

3

我想,這可能給你你想要什麼,但有可能是一個更好的方式:

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

,我不認爲這個問題的答案的作品畢竟。讓我們知道如果它不是。 – 2012-04-19 21:40:19

4
ddply(meanY, .(grp), summarise, max=max(V1), where=t[which.max(V1)]) 
相關問題