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

在R语言中使用dplyr实现分组计数的方法咨询

用dplyr实现类似MySQL的分组计数

没问题!用dplyr完成你要的分组统计行数(类似MySQL的GROUP BY + COUNT(*))其实非常简单,核心就是两个关键步骤:指定分组变量,再统计每组的行数。我结合NASA HTTP请求数据集的场景给你举几个实用例子:

最简洁的方式:直接用count()

count()是dplyr专门用来做分组计数的快捷函数,它会自动帮你完成分组+统计的操作,代码比MySQL还简洁:
假设你的NASA数据集叫nasa_http_data,如果你想统计不同请求路径(比如request列)的请求次数,代码如下:

library(dplyr)

# 按request列分组,统计每组行数
nasa_http_data %>% count(request)

这完全等价于MySQL里的:

SELECT request, COUNT(*) FROM nasa_http_data GROUP BY request;

如果想按计数结果从高到低排序,只要加个sort = TRUE参数就行:

nasa_http_data %>% count(request, sort = TRUE)

更灵活的方式:group_by() + summarize()

如果你需要在分组后做更多操作(比如同时计算其他统计量),可以用group_by()先指定分组变量,再用summarize()配合n()函数统计行数:

nasa_http_data %>%
  group_by(host)  # 按请求主机(host列)分组
  %>% summarize(
    request_count = n(),  # 统计每组的请求次数
    earliest_request = min(time)  # 顺便统计该主机最早的请求时间(示例扩展操作)
  )

这里的n()函数就是dplyr里用来统计当前分组行数的工具,和MySQL里的COUNT(*)作用一致。

多列分组的情况

如果需要按多个维度分组(比如同时按host和request),两种方式都支持:

# 用count()的多列分组
nasa_http_data %>% count(host, request)

# 用group_by()+summarize()的多列分组
nasa_http_data %>%
  group_by(host, request)
  %>% summarize(total = n())

简单总结下:group_by()就是用来告诉dplyr“我要按哪几列分组”的关键函数,之后的所有操作都会基于每个分组独立执行,搭配n()或者count()就能轻松实现你要的分组计数效果啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:40:55