使用dplyr group_by总结如何在另一个变量的最大值处保留变量?

时间:2016-07-28 11:32:11

标签: r dplyr

例如,使用空气质量数据, 我想计算每个月的最高温度。 然后保持最高温度发生的那一天。

library(dplyr)
# Maximum temperature per month
airqualitymax <- airquality %>% 
    group_by(Month) %>% 
    summarise(maxtemp = max(Temp))
# Day of the month on which the max occured
airquality %>% 
    left_join(airqualitymax, by = "Month") %>%
    filter(Temp == maxtemp) 

现在看来这一天不是唯一的, 但是假设它是唯一的,有没有办法直接选择在summarize()中出现最大值的那一天?

1 个答案:

答案 0 :(得分:2)

我们可以使用slice来保留具有最大&#39; Temp&#39;的行。对于每个月&#39;

airquality %>% 
   group_by(Month) %>% 
   slice(which.max(Temp))

更快的选择是arrange&#39; Temp&#39;在降序(或升序)并获得第一个观察(或最后slice(n())

airquality %>%
  group_by(Month) %>%
  arrange(desc(Temp)) %>%
  slice(1L)