You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 01:17:34