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

如何用R语言分组特定天数并求和对应列以绘制直方图

合并6及以上天数为一组的处理方法

问题分析

你之前的代码报错原因是:直接对df$days向量调用summarise(该函数仅适用于数据框),且修改列与汇总的逻辑不连贯,导致语法错误。

简便处理方法(推荐用dplyr)

借助dplyr的链式操作可以快速完成分组汇总,同时保证输出顺序符合需求:

library(dplyr)

# 处理分组并汇总
df_processed <- df %>%
  # 将大于5的days替换为"6+",统一转为字符类型避免类型冲突
  mutate(days = ifelse(days > 5, "6+", as.character(days))) %>%
  # 按修改后的days分组
  group_by(days) %>%
  # 每组求和n,汇总后取消分组
  summarise(n = sum(n), .groups = 'drop') %>%
  # 按指定顺序排列,保证"6+"排在最后
  arrange(match(days, c("0","1","2","3","4","5","6+")))

运行后df_processed的结果就是你需要的格式:

daysn
0408
151
2103
3112
435
517
6+14

Base R替代方法

如果不想加载dplyr,用基础R也能实现:

# 创建分组标签
df$days_group <- ifelse(df$days > 5, "6+", as.character(df$days))
# 按分组汇总n
df_processed <- aggregate(n ~ days_group, data = df, sum)
# 重命名列并调整顺序
colnames(df_processed) <- c("days", "n")
df_processed <- df_processed[match(df_processed$days, c("0","1","2","3","4","5","6+")), ]

绘图注意事项

因为你已经有了汇总后的n值,用geom_col()比geom_bar()更合适(geom_bar默认是自动计数,而geom_col直接使用现有数值):

library(ggplot2)

ggplot(df_processed, aes(x = days, y = n)) +
  geom_col(fill = "steelblue") +
  labs(x = "天数", y = "数量")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 11:34:52