将许多不同Excel文件的小时数据转换为每日数据
我一直在下载每小时的水质数据并将其组织到许多不同州的Excel中,并按年度进行组织。我已经为他们做了数据准备,以确保没有零/一年中的每一天(DOY)有24个值,但时间序列图太过嘈杂,所以希望我得到每日平均值 所有站点的年度数据在可用天数方面都是不同的,有时由于没有记录而遗漏了整整几个月 所以我的问题是,我如何开发一个代码来给我一个特定DOY的每日平均值,我可以应用于许多不同的Excel表格。数据如下所示: 文件的保存方式与CA1_2012类似(加州站点1从2012年开始的每小时数据)将许多不同Excel文件的小时数据转换为每日数据,excel,matlab,time-series,aggregate,Excel,Matlab,Time Series,Aggregate,我一直在下载每小时的水质数据并将其组织到许多不同州的Excel中,并按年度进行组织。我已经为他们做了数据准备,以确保没有零/一年中的每一天(DOY)有24个值,但时间序列图太过嘈杂,所以希望我得到每日平均值 所有站点的年度数据在可用天数方面都是不同的,有时由于没有记录而遗漏了整整几个月 所以我的问题是,我如何开发一个代码来给我一个特定DOY的每日平均值,我可以应用于许多不同的Excel表格。数据如下所示: 文件的保存方式与CA1_2012类似(加州站点1从2012年开始的每小时数据) 我知道在
我知道在这个话题上有很多东西,但我一直在尝试所有的东西,我无法得到一个有效的代码 您可以使用在matlab中根据第一列中的值得到第二列的总和
[m,~,n] = unique(data(:,1));
sumdata = [m, accumarray(n,data(:,2))];
对于平均值,我建议:
avgdata = grpstats(data, DOY, {'mean'});
或者按照建议:
avgdata = accumarray(DOY, data, [], @mean);
您还可以通过使用excel中的数据透视表和通过
DOY对数据进行分组来获得所需的数据,并在表中获得这些数据的平均值。(无需编码)。您可以使用在matlab中根据第一列中的值获得第二列的总和
[m,~,n] = unique(data(:,1));
sumdata = [m, accumarray(n,data(:,2))];
对于平均值,我建议:
avgdata = grpstats(data, DOY, {'mean'});
或者按照建议:
avgdata = accumarray(DOY, data, [], @mean);
您还可以通过使用excel中的数据透视表和通过DOY对数据进行分组来获得所需的数据,并在表中获得这些数据的平均值。(无需编码)。您至少可以在excel中发布您尝试过的数据透视表吗?您至少可以在excel中发布您尝试过的数据透视表吗?我想您可以在调用accumarray
时添加,[],@mean
avgdata=accumarray(DOY,data,[],@mean)代码>是。我同意,但我个人更喜欢grpstats。非常感谢您的帮助!!我在想你可以在调用accumarray
avgdata=accumarray(DOY,data,[],@mean)时添加…,[],@mean
代码>是。我同意,但我个人更喜欢grpstats。非常感谢您的帮助!!