亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何選擇dplyr組中具有最大值的行?

如何選擇dplyr組中具有最大值的行?

jeck貓 2019-06-26 13:44:22
如何選擇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

正如@docendo在評論中指出的,slice如果您嚴格地只想每組1行,請按下面的@RoyalITS回答,這里可能會優先考慮。如果存在具有相同最大值的多行,此答案將返回多行。


查看完整回答
反對 回復 2019-06-26
  • 3 回答
  • 0 關注
  • 1405 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號