How to filter tables in the cell?

5 views (last 30 days)
BN
BN on 9 Apr 2020
Commented: BN on 11 Apr 2020
Hey all, I have a 1x2 cell array (C), containing tables. In each table, I have a column named season. rows in the season column include Winter, Spring, Summer, and Autumn. So I need to have 4 new cells that each one contains only one season data. Like this:
C_winter
C_Spring
C_Summer
C_Autumn
Where each one contains:
{30×3 table} {30×3 table} {30×3 table}
Please let me know how I can do that.
Thanks

Accepted Answer

Akira Agata
Akira Agata on 10 Apr 2020
How about the following?
C_Winter = cellfun(@(x) x(strcmp(x.season,'Winter'),:),C,'UniformOutput',false);
The same solution will be applicable to other seasons.
  1 Comment
BN
BN on 11 Apr 2020
Really thank you both answers are perfect.

Sign in to comment.

More Answers (1)

Walter Roberson
Walter Roberson on 10 Apr 2020
cellfun(@(T) splitapply(@(varargin) {table(varargin{:}, 'VariableNames', T.Properties.VariableNames)}, T, findgroups(T.season)), C, 'uniform', 0)
The result will be a cell array the same size of C, each entry of which is a cell array containing 4x1 tables, one table for each season.

Categories

Find more on Tables in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!