How to convert daily data to monthly?

조회 수: 21 (최근 30일)
Mohammad
Mohammad 2012년 12월 5일
답변: ABHILASH SINGH 2020년 3월 13일
I have huge number of precipitation daily data in a column (say for 60 years) for 400 meteorological stations. Now I need to convert it to monthly. How can I do that? thanks.
  댓글 수: 2
per isakson
per isakson 2012년 12월 5일
Months have 28, 29, 30 or 31 days, which makes it a bit tricky.
Do you have a table with
date, value
rather than just a column?
Does the length of the months matter?
Mohammad
Mohammad 2012년 12월 5일
my data format is Year Month Day data
that is in 4 column. Length of month is always 30. Does it help for providing your answer? thanks.

댓글을 달려면 로그인하십시오.

답변 (5개)

Andrei Bobrov
Andrei Bobrov 2012년 12월 5일
편집: Andrei Bobrov 2012년 12월 5일
one way
M - your data matrix with 4 columns < Year Month Day data > - double type
[a,~,c] = unique(M(:,1:2),'rows');
out = [a, accumarray(c,M(:,4),[],@mean)];

Chad Greene
Chad Greene 2014년 11월 5일
downsample_ts can do this by
precip_monthlymean = downsample_ts(precip_daily,t_daily);
  댓글 수: 2
ABDULLA RAHIL
ABDULLA RAHIL 2016년 8월 25일
Hi Chad I tried to use this equation but i couldn't i have a daily data and want to have monthly data
Chad Greene
Chad Greene 2016년 8월 31일
My mistake--
precip_monthlymean = downsample_ts(precip_daily,t_daily,'monthly','mean');

댓글을 달려면 로그인하십시오.


Babak
Babak 2012년 12월 5일
Every 30 data rows, I would average them out and save it in 1 row.This way, 30 days shrinks down to 1 data (a month). Or another way, you can simply delete 29 data rows and keep only one from every 30 data rows.
  댓글 수: 2
Mohammad
Mohammad 2012년 12월 5일
Thanks. But please provide answer through matlab function.
Babak
Babak 2012년 12월 5일
you need to write what your variables are and we would know which format they are... I mean what type they are for example, string? double, or cell? moreover they are all in a matrix or a cell or how you ahev sorted them..

댓글을 달려면 로그인하십시오.


per isakson
per isakson 2012년 12월 5일
편집: per isakson 2012년 12월 5일
Given thirty days in every month try this
daily_val = rand( 30*12, 1 );
daily_val = reshape( daily_val, 30, [] );
monthly_val = sum( daily_val, 1 );
here I assume that the first value in daily_val is the first value of a month. This is intended as a start.

ABHILASH SINGH
ABHILASH SINGH 2020년 3월 13일

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by