필터 지우기
필터 지우기

Daily average precip for many years

조회 수: 2 (최근 30일)
Thomas Burbey
Thomas Burbey 2018년 5월 17일
댓글: dpb 2018년 5월 18일
I have a large matrix of two columns containing dates (eg 1/1/1991) and precip values. I want to create the average daily precip for all years from 1991-2016 such that the day of the year is in column 1 and the ave precip value is in column 2. I'm getting bogged down I believe because of leap years (not sure how to eliminate that date, which is fine). Any help would be greatly appreciated.
  댓글 수: 2
the cyclist
the cyclist 2018년 5월 17일
Can you (ideally) upload your data in a MAT file, or (less ideally) give an example -- not just a description -- of how your input data are stored?
Thomas Burbey
Thomas Burbey 2018년 5월 18일
Here is the precip file you requested showing you the format.

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

채택된 답변

dpb
dpb 2018년 5월 18일
편집: dpb 2018년 5월 18일
Just taking a stab presuming the file is something recognizable--
precip=table2timetable(readtable('yourfile.ext')); % read the file; convert to timetable
daily=retime(precip,'daily','mean');
Done!
"Here is the precip file..."
Oh...only daily data and already in table--OK, then create the grouping variable
>> precip.DOM=day(precip.DATE); % day of month each entry
>>daily=varfun(@mean,precip,'groupingvariables','DOM','inputvariables','Precipitation');
...
ADDENDUM OK, answer the question asked... :)
>> precip.DOY=day(precip.DATE,'dayofyear');
>> daily=varfun(@mean,precip,'groupingvariables','DOY','inputvariables','Precipitation');
>> whos daily
Name Size Bytes Class Attributes
daily 366x3 10149 table
>> daily(1:10,:)
ans =
10×3 table
DOY GroupCount mean_Precipitation
___ __________ __________________
1 26 3.27692307692308
2 26 3.8
3 26 2.5
4 26 2.84230769230769
5 26 3.94615384615385
6 26 5.21923076923077
7 26 2.13461538461539
8 26 2.53461538461538
9 26 3.65
10 26 3.33461538461538
>>
should work; I believe the 'dayofyear' option came about R2104 or so...there's just too much stuff to try to recall introduced too rapidly.
  댓글 수: 11
Thomas Burbey
Thomas Burbey 2018년 5월 18일
Everything works fine. I gave you the matrix after I had eliminated NaN, which is what the raw precip file has when no precip for a day is measured. Sorry for the confusion. Thanks again for your help.
dpb
dpb 2018년 5월 18일
Ah, so! That 'splains things, indeed! :)
The time-related stuff has gotten pretty deep as well as facilities to use the various varieties of tables. Seems to me like there's an excess of types that are similar but not quite the same that makes for very difficult learning task; I wish TMW would slow down some and work more on consistency of interfaces and methods.

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

추가 답변 (1개)

Razvan Carbunescu
Razvan Carbunescu 2018년 5월 18일
An alternative if using R2018a is groupsummary, it has a few different ways of selecting days for each week, month, year from a date:
>> GT = groupsummary(precip,'DATE','dayofyear','mean','Precipitation');
>> head(GT)
ans =
8×3 table
dayofyear_DATE GroupCount mean_Precipitation
______________ __________ __________________
1 26 3.2769
2 26 3.8
3 26 2.5
4 26 2.8423
5 26 3.9462
6 26 5.2192
7 26 2.1346
8 26 2.5346
  댓글 수: 2
Thomas Burbey
Thomas Burbey 2018년 5월 18일
That is cool! I wish I had that latest version. SO helpful
dpb
dpb 2018년 5월 18일
There's only a one-liner difference to generate the grouping variable, though, so it's only a relatively minor syntactic sugar refinement.
Note same results as above which is another independent confirmation of correct result.

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

카테고리

Help CenterFile Exchange에서 Data Type Conversion에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by