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

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

请先登录,再进行评论。

更多回答(0 个)

产品


版本

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by