如何选择dplyr组中具有最大值的行?我想用dplyr在每个组中选择一个具有最大值的行。首先,我生成一些随机数据来显示我的问题。set.seed(1)df <- expand.grid(list(A = 1:5, B = 1:5, C = 1:5))df$value <- runif(nrow(df))在plyr中,我可以使用自定义函数来选择此行。library(plyr)ddply(df, .(A, B), function(x) x[which.max(x$value),])在dplyr中,我使用此代码获取最大值,但不是最大值行(本例中为C列)。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
3 回答
慕丝7291255
TA贡献1859条经验 获得超6个赞
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
slice
- 3 回答
- 0 关注
- 1366 浏览
添加回答
举报
0/150
提交
取消