R - 在之前的 group_by 级别进行汇总时获取最大子组的计数

问题描述 投票:0回答:1

我正在尝试做的是以下内容:

library(tidyverse)

starwars %>% 
  filter(!is.na(gender)) %>% 
  group_by(gender) %>% 
  summarise(total_count = n(), max_species_count_per_gender = max(count(species)))

基本上,除了尝试获取每组的总计数(在一个

gender
之后用
group_by
分隔并在摘要列中报告)之外,我还尝试提取该较高级别组的最高子组人口计数给定的特征(在本例中为
species
)。显然,上面不行,返回错误信息,

Caused by error in `UseMethod()`:
! no applicable method for 'count' applied to an object of class "character"

所以,如果我想最终得到类似于

的东西
# A tibble: 2 × 3
  gender    total_count     max_species_count_per_gender
  <chr>           <int>                            <int>
1 feminine           17                   some_smaller_x
2 masculine          66                   some_smaller_y

这是我可以作为

summarise
行动的一部分来处理的事情,还是我需要做其他事情?谢谢您的帮助。

r dplyr tidyverse
1个回答
1
投票

您可以

summarize
两次。使用
.by...
group_by
ungroup
的替代方案,两者都可以。

library(tidyverse)

starwars %>%
  filter(!is.na(gender)) %>%
  summarize(
    sub_count = n(),
    .by = c(species, gender)
  ) %>%
  summarize(
    total_count = sum(sub_count),
    max_species_count = max(sub_count),
    .by = gender
  )
#> # A tibble: 2 × 3
#>   gender    total_count max_species_count
#>   <chr>           <int>             <int>
#> 1 masculine          66                26
#> 2 feminine           17                 9

创建于 2024-02-29,使用 reprex v2.0.2

© www.soinside.com 2019 - 2024. All rights reserved.