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

按季度分组统计列唯一值出现次数并绘制柱状图求助

正确实现方法

一、数据分组统计

你的第一段代码思路没问题,只是输出方式和列名匹配上有问题,修正后即可得到规范的统计结果:

通用季度分组统计(dplyr实现)

# 先加载dplyr包,未安装则先运行 install.packages("dplyr")
library(dplyr)

# 按季度、产品分组统计出现次数,注意列名要和原数据集一致(原数据是Product,不是product)
df_summary <- dmv %>% 
  group_by(quarter, Product) %>% 
  summarize(count = n(), .groups = "drop")  # .groups="drop"取消分组状态,方便后续处理

# 直接查看统计结果
print(df_summary)

如果只需要统计单个季度(比如Q1)并取Top10产品:

# 筛选Q1数据,统计产品出现次数并取前10
df_q1_top10 <- dmv %>% 
  filter(quarter == 1) %>% 
  group_by(Product) %>% 
  summarize(count = n(), .groups = "drop") %>% 
  arrange(desc(count)) %>% 
  slice_head(n = 10)

二、绘制柱状图

推荐用ggplot2包绘制,比基础绘图更灵活美观:

全季度分组柱状图(各季度产品计数并列展示)

# 加载ggplot2包,未安装则先运行 install.packages("ggplot2")
library(ggplot2)

ggplot(df_summary, aes(x = Product, y = count, fill = factor(quarter))) +
  geom_bar(stat = "identity", position = "dodge") +  # 生成并列柱状图
  labs(title = "各季度产品出现次数统计", x = "产品", y = "出现次数", fill = "季度") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))  # 旋转X轴标签,避免重叠

单季度Top10产品柱状图

ggplot(df_q1_top10, aes(x = reorder(Product, -count), y = count)) +  # 按计数降序排列产品
  geom_bar(stat = "identity", fill = "#2E8B57") +
  labs(title = "Q1出现次数Top10产品", x = "产品", y = "出现次数") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

原代码问题说明

  1. 第一段代码:table(df_raw)不适合展示分组统计后的DataFrame,直接打印df_raw即可;另外列名大小写要和原数据集匹配(原数据是Product,代码里写成了product)。
  2. 第二段代码:存在列名错误(product_name应为Product),且用hist()绘制分类数据的柱状图是错误的,hist()用于绘制数值型数据的直方图,分类数据应使用柱状图工具。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 11:50:32