gpt4 book ai didi

r - 根据R dplyr中的多列选择每组中具有最大值的行

转载 作者:行者123 更新时间:2023-12-05 02:32:43 27 4
gpt4 key购买 nike

我的数据框看起来像这样

library(tidyverse)

df1 <- tibble(col1= c("apple","apple","banana","banana"),
col2 = c("appl","aple","banan","bananb"),
count_col1=c(1,1,4,4), count_col2=c(3,4,1,1))
df1
#> # A tibble: 4 × 4
#> col1 col2 count_col1 count_col2
#> <chr> <chr> <dbl> <dbl>
#> 1 apple appl 1 3
#> 2 apple aple 1 4
#> 3 banana banan 4 1
#> 4 banana bananb 4 1

reprex package 创建于 2022-02-17 (v2.0.1)

我想在 grouping_by col1 之后选择具有基于 count_col1 和 count_col2 的最大值的行。

我希望我的数据看起来像这样

      col1   col2   count_col1 count_col2
apple aple 1 4
banana banan 4 1
banana bananb 4 1

对于一个专栏你可以写点东西

df1 %>% 
slice(which.max(count_col1))

但不是两个人

最佳答案

我们可以使用 pmax 获取 'count' 列的按行最大值,按 'col1' 分组,过滤 max 所在的行“最大”列的值为。

library(dplyr)
df1 %>%
mutate(Max = pmax(count_col1, count_col2) ) %>%
group_by(col1) %>%
filter(Max == max(Max)) %>%
ungroup %>%
select(-Max)

-输出

# A tibble: 3 × 4
col1 col2 count_col1 count_col2
<chr> <chr> <dbl> <dbl>
1 apple aple 1 4
2 banana banan 4 1
3 banana bananb 4 1

我们也可以使用slice_max

library(purrr)
df1 %>%
group_by(col1) %>%
slice_max(invoke(pmax, across(starts_with("count")))) %>%
ungroup
# A tibble: 3 × 4
col1 col2 count_col1 count_col2
<chr> <chr> <dbl> <dbl>
1 apple aple 1 4
2 banana banan 4 1
3 banana bananb 4 1

关于r - 根据R dplyr中的多列选择每组中具有最大值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71165531/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com