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

如何在Matlab中将表格内月度数据转换为季度平均数据

Matlab实现月度TB3m数据转季度均值并匹配季度末日期的方法

以下两种实现方案,你可以根据自己的Matlab版本和使用习惯选择:


方案1:使用timetable时间聚合(推荐,操作最简单)

适合R2016b及以上版本,内置时间序列处理逻辑不用自己写分组规则

  • 第一步:将现有月度数据转换为timetable格式
% 先把月末日期转为datetime格式(如果原数据是字符串/数值格式需要先转换,可根据实际格式调整InputFormat参数)
dates_monthly = datetime(dates_monthly,'InputFormat','yyyy/MM/dd');
% 构建月度timetable
TT_monthly = timetable(dates_monthly, TB3m_monthly);
  • 第二步:按季度聚合计算均值,自动生成季度末日期
% retime函数按季度重采样,聚合方法取均值,时间戳自动设为季度最后一天
TT_quarterly = retime(TT_monthly, 'quarterly', 'mean', 'EndOfQuarter', true);
  • 第三步:和你已有的dates_quarterly表格对齐
% 直接提取聚合后的季度均值和对应日期
TB3M_quarterly = TT_quarterly.TB3m_monthly;
auto_q_date = TT_quarterly.dates_monthly;

% 如果需要和你现有季度末日期匹配对齐的话用ismember筛选
[~, loc] = ismember(dates_quarterly, auto_q_date);
TB3M_quarterly = TB3M_quarterly(loc);

方案2:手动分组计算(兼容低版本Matlab)

不需要依赖timetable,自己做分组统计即可

  • 第一步:生成每个月度对应的唯一季度分组标识
% 用年份+季度编号组成唯一分组,比如1975年第一季度标识为19751
q_group = year(dates_monthly)*10 + quarter(dates_monthly);
  • 第二步:按季度分组计算均值
[unique_q, ~, group_idx = unique(q_group);
% 分组计算每组的TB3m均值,存在缺失值可以把@mean换成@nanmean
TB3M_quarterly = accumarray(group_idx, TB3m_monthly, [], @mean);
  • 第三步:生成对应季度末日期,和dates_quarterly对齐
% 生成每个分组对应的季度最后一天日期
generated_q_date = datetime(floor(unique_q/10), mod(unique_q,10)*3, eomday(floor(unique_q/10), mod(unique_q,10)*3));
% 和你现有季度日期匹配
[~, loc] = ismember(dates_quarterly, generated_q_date);
TB3M_quarterly = TB3M_quarterly(loc);

注意:如果你的月度数据存在缺漏,建议先做缺失值填充或者用nanmean替代mean计算均值,避免出现空值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:48:00