Effacer les filtres
Effacer les filtres

Find timeseries mean for 10 years

2 vues (au cours des 30 derniers jours)
Sarah Yun
Sarah Yun le 15 Déc 2019
Commenté : Adam Danz le 16 Déc 2019
Hi,
I have time-series temperature data for years 1950 to 2010.
I want to calculate the decadal means i.e. 1950 - 1960, 1960 - 1970 etc and plot them as a histogram
What code should I use to calculate the 10 year means?
Thank you.

Réponse acceptée

Adam Danz
Adam Danz le 15 Déc 2019
Modifié(e) : Adam Danz le 15 Déc 2019
Assuming you have a vector named temperature that stores the temperatures and a vector named dt that stores the datetime stamps (in datetime format), you can use findgroups() to group the data into decades and then splitapply() to calculate the group means.
% Create demo data
dt = datetime(1950,1,1):datetime(2019,12,15);
temperature = rand(size(dt)) * 100;
% Group by decade
[groups, groupID] = findgroups(floor(year(dt)/10)*10);
% Compute decade means
decMeans = splitapply(@mean,temperature,groups);
% Put results into a table
results = table(groupID.', decMeans.','VariableNames',{'Decade','MeanTemp'});
View results
results =
7×2 table
Decade MeanTemp
______ ________
1950 49.348
1960 50.959
1970 50.13
1980 49.847
1990 49.808
2000 49.471
2010 49.404
[update]
If there are NaN values you'd like to ignore,
decMeans = splitapply(@(x)mean(x,'omitnan'),temperature,groups);
  6 commentaires
Sarah Yun
Sarah Yun le 16 Déc 2019
Thank you.
How do I find the p-values?
It shows a box-plot only.
Adam Danz
Adam Danz le 16 Déc 2019
Did you look at the p output?
Here's more info

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Data Type Identification dans Help Center et File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by