如何 "bring along another variable" 与 dplyr::summarise

How to "bring along another variable" with dplyr::summarise

我想在每个条件组合中得到最大值,而且还要带同索引的另一个变量的值。

df <- mtcars %>%
  group_by(gear,carb) %>%
  summarise(max_cyl = max(cyl))

但是我要如何 "bring along" 每辆车对应的最大 mpg?这似乎是一个基本的东西,但它似乎也没有出现在 dplyr 教程中。

换句话说,我只想 select 那些在每个齿轮 x 碳水化合物条件下具有最大气缸数的汽车,并且知道同一辆车的油耗。

我发现 which.max() 函数适用于此。

df1 <- mtcars %>%
  group_by(gear,carb) %>%
  summarise(max_cyl = max(cyl),
            mpg = mpg[which.max(cyl)])

另一种可能性:

df2 <- (mtcars
  %>% group_by(gear,carb) 
  %>% filter(cyl==max(cyl)) 
  %>% select(cyl,mpg)
)

(如果您想避免出现有关 "Adding missing grouping variables" 的消息,则在最后一行中输入 select(gear,carb,cyl,mpg)

如果您想捕获更多变量并且不想继续输入,这种方法会很方便 which.max()