Monthly data to seasonal using sum (how to use splitapply)
6 views (last 30 days)
Show older comments
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
0 Comments
Accepted Answer
Peng Li
on 28 Mar 2020
Edited: Peng Li
on 28 Mar 2020
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 Comments
Peng Li
on 30 Mar 2020
>> [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
More Answers (0)
See Also
Categories
Find more on Other Formats in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!