将每小时数据转换为许多不同excel文件的每日数据

时间:2017-06-01 18:18:41

标签: excel matlab time-series

我是MATLAB的新手,对于我的研究工作真的很遗憾。我一直在为许多不同的州下载和组织每小时水质数据,并按年度组织。我已经为他们做了数据准备以确保没有零/一年中的每一天(DOY)有24个值,但是时间序列图太吵了所以我的顾问希望我得到每日平均值。所有网站的年度数据在可用的天数方面都有所不同,有时由于没有录制而导致整个月缺失。所以我的问题是,如何开发一个代码来为我提供与特定DOY相关的平均每日价值,我可以将其应用于许多不同的Excel工作表。数据如下所示:

Excel File, DOY = day of year, DO_fill = my data value

并保存文件,如CA1_2012(加利福尼亚州网站2012年1小时数据)

我知道这个主题有很多,但我一直在尝试一切,但我无法获得有效的代码!谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用 accumarray ,根据matlab第一列中的值获取第二列的总和;

[m,~,n] = unique(data(:,1));
sumdata = [m, accumarray(n,data(:,2))];

表示我会建议 grpstats

avgdata = grpstats(data, DOY, {'mean'});

@gnovice建议:

avgdata = accumarray(DOY, data, [], @mean);

您还可以通过DOY中的数据透视表在Excel和组数据中获得所需内容,并在表格中获取它们的平均值。 (无需编码)。