Find monthly mean from daily data of same year using find function

2 views (last 30 days)
Naveen Mk on 10 Jul 2019
Commented: KSSV on 10 Jul 2019
Hi I have a spreadsheet contains 1 year data and I want to find monthly mean column1 contains dd-mmm-yyyy And column2 contains data

KSSV on 10 Jul 2019
REad about datevec. This will give you years, months and days. Using the months and your data you can find mean. Let thedates be your dates and A be your data.
[y,m,d] = datevec(thedates) ;
iwant = zeros(12,1) ;
for i = 1:12
iwant(i) = mean(A(m==i)) ;
end

Show 1 older comment
KSSV on 10 Jul 2019
Guillaume Yes I agree, we have lot of functions to utilize. Most of the users here are beginners and they ask question to learn (I assume,:)). I gave a basic answer to show them how this can be done, so that they can learn.
Guillaume on 10 Jul 2019
Well, I'm sorry to say but you're teaching beginners bad practices. As I said, your code will not work properly if the there is more than one year in the data.
And your code cannot be easily changed to aggregate the data per quarter or per week. Using retime, it's as trivial as specifying 'quarterly' or 'weekly' instead of 'monthly'. And the intent is of course much clearer.
KSSV on 10 Jul 2019
As the use said..the data is of one year.....quickly I gave that....

Guillaume on 10 Jul 2019
The easiest way:
data = readtimetable('C:\somewhere\somefile.xlsx'); %may need some adjustement depending on the actual format of the line
monthlydata = retime(data, 'monthly', 'mean');
Done!