# ggplot - r生存分析

## 如何使用dplyr選擇每組中具有最大值的行? (3)

``````df %>% group_by(A, B) %>% top_n(n=1)
``````

``````set.seed(1)
df <- expand.grid(list(A = 1:5, B = 1:5, C = 1:5))
df\$value <- runif(nrow(df))
``````

``````library(plyr)
ddply(df, .(A, B), function(x) x[which.max(x\$value),])
``````

``````library(dplyr)
df %>% group_by(A, B) %>%
summarise(max = max(value))
``````

``````sessionInfo()
R version 3.1.0 (2014-04-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=English_Australia.1252  LC_CTYPE=English_Australia.1252
[3] LC_MONETARY=English_Australia.1252 LC_NUMERIC=C
[5] LC_TIME=English_Australia.1252

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

other attached packages:
[1] dplyr_0.2  plyr_1.8.1

loaded via a namespace (and not attached):
[1] assertthat_0.1.0.99 parallel_3.1.0      Rcpp_0.11.1
[4] tools_3.1.0
``````

``````result <- df %>%
group_by(A, B) %>%
filter(value == max(value)) %>%
arrange(A,B,C)
``````

``````identical(
as.data.frame(result),
ddply(df, .(A, B), function(x) x[which.max(x\$value),])
)
#[1] TRUE
``````

``````df %>% group_by(A,B) %>% slice(which.max(value))
``````