每日平均数年数据

37次观看(过去30天)
杰米·迭戈·里科
杰米·迭戈·里科 2020年7月9日
编辑: 乔纳斯 2020年7月10日
这就跟你问声好!
我有1981-2019年的海温数据。我想计算一年中每天的平均值。
所以每一天的值是39年海温的平均值。
数据结构是这样的:
sst_date =(日、月、年,sst);
我正在考虑循环sst_date,但这非常令人困惑,因为月份和一些年有不同的日子。
有没有更简单的方法?
谢谢你!
4评论
杰米·迭戈·里科
杰米·迭戈·里科 2020年7月9日
嗨,不,这个系列将持续到2019年。
所以我想创建一个气候学年,所以计算平均sst为1月1日,2日1月3日....直到12月31日

登录评论。

接受的答案

克里斯·拉皮埃尔
克里斯·拉皮埃尔 2020年7月9日
编辑:克里斯·拉皮埃尔 2020年7月9日
如果可以将数据转换为表,请使用 groupsummary 函数。假设你想计算每年的平均天数,你可以这样做:
dailyAvg = groupsummary(dataTbl,[“monthVar”“dayVar”),“的意思是”“场”
如果你真的把你的约会变成 datetime 变量,你也可以这样做:
groupsummary (dataTbl“日期”“dayofyear”“的意思是”“场”
下面是使用上面提供的数据片段的完整代码。
数据= [1 1 1982 13.4691935954243 .
2 1 1982 13.4287935963273
3 1 1982 13.4183935965598
4 1 1982 13.9135935854912
5 1 1982 13.9483935847134
6 1 1982 13.9511935846508
71 1982 13.9471935847402
8 1 1982 14.0023935835064
9 1 1982 13.9711935842037
10 1 1982 13.8475935869664];
dataTbl =表(数据);
dataTbl = splitvars(数据bl,“数据”“NewVariableNames”, (“天”“月”“年”“场”])
选项一:按月分组,然后按日分组。
dailyAvg1 = groupsummary(dataTbl,[“月”“天”),“的意思是”“场”
%选项二-在datetime变量date上使用groupbin "dayofyear"
dataTbl。Date = datetime(fliplr(data(:,1:3)));
dailyAvg2 = groupsummary(dataTbl,“日期”“dayofyear”“的意思是”“场”
1评论
杰米·迭戈·里科
杰米·迭戈·里科 2020年7月10日
非常感谢你,Cris,真的很好!!

登录评论。

更多答案(2)

乔纳斯
乔纳斯 2020年7月9日
编辑:乔纳斯 2020年7月10日
这可能会有用
[~,~,G] = unique([SST(:,1),SST(:,2)],“行”
out = splitapply(@mean,SST(:,4),G);
你应该得到一年中的每一天的一个值
2的评论
乔纳斯
乔纳斯 2020年7月10日
ops . .我的坏。我已经更新了答案,以便将来参考:)

登录评论。


凯利卡尼
凯利卡尼 2020年7月9日
您还可以看看重塑时间系列。的一部分 气候数据工具箱 ).设置 “本” 选项 “日期” 将数据重塑为一年x天的年矩阵(即使有天没有数据),并照顾与闰日相关的混乱。

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!