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

如何在R语言中按月份排序日期数据?新手求助代码排错

问题修正建议

代码中的核心错误

  • mutate(weather, 'month'):dplyr管道中,mutate不需要重复传入数据框对象,直接定义新列即可,这行写法完全错误。
  • group_by(month = lubridate::floor_date(weather$Day, 'month')):管道内引用数据列时无需加weather$,直接用列名Day即可,否则会破坏管道的上下文传递逻辑。
  • summarise(weather.month$High):weather.month是你即将生成的对象,此时还不存在;且summarise需要明确计算逻辑(比如求均值、总和)并为结果列命名。

修正后的示例代码

假设你的Day列是日期格式(如果不是,先通过lubridate转换),以下是按月份分组并计算每月气温统计值的代码:

library(readr)
library(dplyr)
library(lubridate)
library(ggplot2)
library(ggridges)

# 读取数据,显式指定Day为日期类型
weather <- read_csv("R/weather.csv", 
                    col_types = cols(Day = col_date(),
                                     High = col_number(), 
                                     Low = col_number(), 
                                     Precip = col_number(), 
                                     Snow = col_number(), 
                                     Snowd = col_integer()))

# 查看数据基础信息
class(weather)
head(weather)

# 按月份分组并汇总统计
weather.month <- weather %>%
  # 生成月份标识(取当月第一天作为分组依据)
  mutate(month = floor_date(Day, "month")) %>%
  # 按月份分组
  group_by(month) %>%
  # 汇总计算:每月最高温、最低温的平均值,忽略缺失值
  summarise(avg_high = mean(High, na.rm = TRUE),
            avg_low = mean(Low, na.rm = TRUE)) %>%
  # 取消分组,方便后续操作
  ungroup()

# 查看分组汇总结果
weather.month

额外说明

  • 如果Day列不是日期格式,先添加mutate(Day = mdy(Day))或mutate(Day = ymd(Day))转换(根据你的日期字符串格式选择对应函数)。
  • 如果需要按月份名称(如"1月"、"February")分组,可以替换成mutate(month_name = month(Day, label = TRUE)),然后按month_name分组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 02:50:33