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

基于R内置co2时间序列构建tibble及年度均值计算问题

解决R中co2时间序列的日期转换与年度平均计算问题

1. 构建包含目标日期列的co2_df

使用tidyverse和lubridate工具,从decimal_time直接推导日期,最简实现如下:

library(tidyverse)
library(lubridate)

co2_df <- tibble(
  decimal_time = time(co2),
  co2_ppm = as.numeric(co2)
) %>%
  mutate(
    year = floor(decimal_time),
    month = round((decimal_time - year) * 12),
    date = make_date(year, month, 1) %>% format("%y/%m/%d")
  ) %>%
  select(decimal_time, co2_ppm, date)

核心逻辑:

  • time(co2)返回的数值为年份 + (月份-0.5)/12(例如1959年3月对应1959.208),通过floor()提取年份,(decimal_time - year)*12得到月份中间值,round()后匹配实际月份。
  • make_date()生成标准日期对象,再用format()转为yy/mm/dd格式的字符串(取每月1号作为近似月度日期)。

2. 构建年度平均co2_yearly

无需依赖日期列,直接用decimal_time的整数部分分组计算,高效简洁:

co2_yearly <- co2_df %>%
  mutate(year = floor(decimal_time)) %>%
  group_by(year) %>%
  summarise(avg_co2_ppm = mean(co2_ppm, na.rm = TRUE)) %>%
  ungroup()

可选方案(基于日期列分组):

若需通过date列处理,可先将字符串转回日期对象再提取年份:

co2_yearly <- co2_df %>%
  mutate(date = as.Date(date, "%y/%m/%d")) %>%
  mutate(year = year(date)) %>%
  group_by(year) %>%
  summarise(avg_co2_ppm = mean(co2_ppm, na.rm = TRUE)) %>%
  ungroup()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.01 16:54:53