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

如何使用tidyverse按组获取事件的最大计数?

优化方案

针对你的需求,这里提供几种更简洁且符合tidyverse官方推荐的实现方式:

方法一:count() + slice_max()(保留数据框结构)

df %>%
  count(id) %>%
  slice_max(n, n = 1, with_ties = FALSE)
  • count(id) 直接按id分组统计观测数,替代了原代码中group_by() + mutate(n())的冗余操作
  • slice_max(n, n = 1, with_ties = FALSE) 按官方推荐的方式提取计数最大的行,with_ties=FALSE确保仅返回一条结果(若存在多个id计数相同,也只取第一个)

如果只需要提取最大计数的数值,可追加pull(n):

df %>%
  count(id) %>%
  slice_max(n, n = 1, with_ties = FALSE) %>%
  pull(n)

方法二:count() + summarize()(直接返回最大计数值)

如果不需要保留分组信息,仅需得到最大计数的数值,这个方式更简洁:

df %>%
  count(id) %>%
  summarize(max_count = max(n))

对比原代码的优势

  • 避免了ungroup()、select(count)这类多余步骤
  • 完全使用tidyverse官方推荐的函数(用slice_max()替代已被软弃用的top_n())
  • 逻辑更清晰,从分组计数到提取最大值一步到位

内容的提问来源于stack exchange,提问作者mtnrambler

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 02:25:29