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

是否存在R函数可对时间序列数据聚合计算月度平均值?

你需要按「月份」和「部门」两个维度分组,对各数值采集列计算平均值,聚合时会自动跳过NA值。以下是两种常用场景的实现方案:

方案1:Python Pandas 实现

import pandas as pd

# 读取原数据,替换为你实际的读取方式,比如read_excel、read_parquet等
df = pd.read_csv('你的原数据路径.csv')

# 1. 将Timestamp列转为标准时间格式
df['Timestamp'] = pd.to_datetime(df['Timestamp'])

# 2. 提取月份作为分组字段
df['month'] = df['Timestamp'].dt.to_period('M')

# 3. 按月份+部门分组求平均值,自动跳过NA值
monthly_avg = df.groupby(['month', 'Department'], as_index=False)[['Value1', 'Value2']].mean()

# 可选操作:如果需要把汇总结果追加回原表
## 先给汇总结果补全时间格式,统一用每月第一天作为月度数据的时间戳
# monthly_avg['Timestamp'] = pd.to_datetime(monthly_avg['month'].astype(str) + '-01 00:00:00')
# final_df = pd.concat([df, monthly_avg.drop('month', axis=1)], ignore_index=True)

# 导出结果
monthly_avg.to_csv('月度汇总结果.csv', index=False)

以你给出的样例数据计算,1970年1月采购部(Procurement)的Value1月度平均值为0.25,Value2月度平均值为0.55,和预期计算结果一致。

方案2:SQL 实现(以MySQL为例)

如果数据存储在关系型数据库中,可直接用SQL语句聚合得到结果:

SELECT 
    DATE_FORMAT(`Timestamp`, '%Y-%m') AS `month`,
    `Department`,
    AVG(`Value1`) AS `avg_Value1`,
    AVG(`Value2`) AS `avg_Value2`
FROM 你的表名
GROUP BY `month`, `Department`
ORDER BY `month`, `Department`;

SQL的AVG函数会自动忽略NULL(对应你表中的NA),无需额外处理。如果需要将结果写入新表,可在语句开头加CREATE TABLE 月度汇总表 AS 即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:18:00