R语言:分组汇总时获取最高规模子组的计数
问题原因
报错是因为count(species)传入的是单个字符向量(species列),但count()函数需要作用于数据框而非单独的列向量,因此触发了"no applicable method"错误。
解决方案
你既可以在summarise操作内实现需求,也可以通过分步分组统计完成,两种可行方案如下:
方案一:分步分组统计(逻辑更直观)
先按gender和species双层分组统计每个物种的数量,再回到gender分组汇总总数量和最大物种计数:
library(tidyverse) starwars %>% filter(!is.na(gender)) %>% group_by(gender, species) %>% summarise(species_count = n(), .groups = "drop_last") %>% summarise( total_count = sum(species_count), max_species_count_per_gender = max(species_count) )
.groups = "drop_last"用于保留gender分组、移除species分组,确保后续汇总逻辑正确。
方案二:直接在summarise内完成
利用cur_data()获取当前分组的完整数据框,在分组内调用count()统计物种数量,再提取最大值:
library(tidyverse) starwars %>% filter(!is.na(gender)) %>% group_by(gender) %>% summarise( total_count = n(), max_species_count_per_gender = count(cur_data(), species) %>% pull(n) %>% max() )
运行结果
两种方案都会得到符合你预期格式的结果:
# A tibble: 2 × 3 gender total_count max_species_count_per_gender <chr> <int> <int> 1 feminine 17 14 2 masculine 66 48
内容的提问来源于stack exchange,提问作者potpie
相关产品推荐
相关产品推荐

