Daily average of several years data
6 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
JAIME DIEGO RICO
le 9 Juil 2020
Modifié(e) : KSSV
le 8 Fév 2024
Hi!
I have SST data from 1981-2019. I'd like to calculate the daily average for each day of the year.
So the value for each day is the average of the SST of the 39 years.
The structure of the data is like this:
sst_date=[day,month,year,sst];
I'm thinking about looping sst_date, but is very confusing because the months and some years have different days.
Is there any way easier?
Thank you
4 commentaires
Réponse acceptée
Cris LaPierre
le 9 Juil 2020
Modifié(e) : KSSV
le 8 Fév 2024
If you can turn your data into a table, use the groupsummary function. Assuming you want to average days from each year, you could do this:
dailyAvg = groupsummary(dataTbl,["monthVar","dayVar"],"mean","sst")
groupsummary(dataTbl,"date","dayofyear","mean","sst")
Here's the full code using the snippet of data you provided above.
data = [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
7 1 1982 13.9471935847402
8 1 1982 14.0023935835064
9 1 1982 13.9711935842037
10 1 1982 13.8475935869664];
dataTbl = table(data);
dataTbl = splitvars(dataTbl,"data","NewVariableNames",["day","month","year","sst"])
% option one - group by month then day.
dailyAvg1 = groupsummary(dataTbl,["month","day"],"mean","sst")
% option two - use the groupbin "dayofyear" on datetime variable "date"
dataTbl.date = datetime(fliplr(data(:,1:3)));
dailyAvg2 = groupsummary(dataTbl,"date","dayofyear","mean","sst")
Plus de réponses (2)
Kelly Kearney
le 9 Juil 2020
You might also take a look at reshapetimeseries.m (part of the Climate Data Toolbox). Setting the 'bin' option to 'date' will reshape data into a year x day-of-year matrix (even if there are days without data), and takes care of the messiness associated with leap days.
Voir également
Catégories
En savoir plus sur Dates and Time dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!