Monthly data to seasonal using sum (how to use splitapply)

조회 수: 6 (최근 30일)
BN
BN 2020년 3월 28일
댓글: BN 2020년 3월 30일
Hi, I wish you are safe and healthy!
I have a 1 x 3 cell with three 360 x 3 table. Each table has a column date with 30 years of monthly data (30 x 12 = 360). I want to have data for seasonal scale, winter, spring, summer and autumn correspond to December–February, March-May, June–August, and September–November, respectively using sum. I would like to create each season in a separate column with the corresponding name of the season and located after all existing columns in the tables.
Thank you so much

채택된 답변

Peng Li
Peng Li 2020년 3월 28일
편집: Peng Li 2020년 3월 28일
Try below
tbl = CELL{1};
tbl.month = month(tbl.dates);
tbl.season = floor(tbl.month ./ 3);
tbl.season(tbl.season == 4) = 0;
tbl.season = categorical(tbl.season, [0 1 2 3], ["Spr", "Sum", "Aut", "Win"]);
You can use findgroups to group them based on seasons and use varfun or splitapply to calculate sum.
  댓글 수: 5
Peng Li
Peng Li 2020년 3월 30일
>> [grp, meanTbl] = findgroups(tbl(:, 'season'));
>> meanTbl.rrr24 = splitapply(@mean, tbl.rrr24, grp);
>> meanTbl
meanTbl =
4×2 table
season rrr24
______ ______
Spr 14.038
Sum 35.004
Aut 10.949
Win 16.958
BN
BN 2020년 3월 30일
Thank you

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

추가 답변 (0개)

카테고리

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

제품


릴리스

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by