首页 > 解决方案 > 在 groupby r 的结果中添加另一个列信息

问题描述

有人能帮助我吗?

我有 A 列、B 列和 C 列,我想获取 C 列的最高值,按 A 分组,但也有 B 的这些最高值的信息

Max <-X  %>% select(A,B,C) %>%  group_by(A) %>% summarise(top = max(C))

但是这段代码只显示了每个唯一 A 数据的最高值,所以我不知道分配给它的 B 值是什么。(重要的是,group_by(A,B)make 不起作用,因为它没有给出每个唯一 A 值的最高值,它返回与数据库 X 相同的值)

标签: rdplyr

解决方案


这可以通过dplyr::top_n? dplyr::slice_max类似方式实现:

library(dplyr)

mtcars  %>% select(cyl, mpg, hp) %>% group_by(cyl) %>% top_n(1, hp)
#> # A tibble: 3 x 3
#> # Groups:   cyl [3]
#>     cyl   mpg    hp
#>   <dbl> <dbl> <dbl>
#> 1     4  30.4   113
#> 2     6  19.7   175
#> 3     8  15     335

mtcars  %>% select(cyl, mpg, hp) %>% group_by(cyl) %>% slice_max(hp)
#> # A tibble: 3 x 3
#> # Groups:   cyl [3]
#>     cyl   mpg    hp
#>   <dbl> <dbl> <dbl>
#> 1     4  30.4   113
#> 2     6  19.7   175
#> 3     8  15     335

因此,在您的情况下,它应该是:

Max <-X  %>% select(A,B,C) %>%  group_by(A) %>% slice_max(C)

推荐阅读