How to break a large table into a set of smaller tables?
Show older comments
Hi,
I have a very large table (priceTbl) of 4 columns. I want to break the large table into a set of smaller tables such that each small table has the same value in column 2 and 4.
How to do that?
Thanks,
Jen
Answers (2)
Peter Perkins
on 15 Jul 2015
Jennifer, it's hard to answer this question without knowing whether "table" means "the MATLAB table data type" or something else, and without knowing what is in the table. Walter's suggestion assumes a table as in "the data type", and further, that variables 2 and 4 in that table are valid inputs to unique(...,'rows'). (Walter, Gold Star for writing working code despite apparently not being able to run it, although you actually only need 13b or later to use tables.) Given that, here's a (perhaps) slightly more direct version of Walter's code:
[~,~,i] = unique(BigTable(:,[2 4]));
for k = 1 : max(i)
TableCell{k} = BigTable(i == k,:);
end
If you're into the whole brevity thing, rowfun lets you do it without a loop:
rowfun(@(x1,x2,x3,x4) table(x1,x2,x3,x4),BigTable, ...
'InputVariables',1:4,'GroupingVariables',[2 4], ...
'OutputFormat','cell')
But Jennifer, given the warning and error that you're getting, it seems likely that either you don't have a table, or the table contains something unusual in those variables. You'll have to provide a short example of your data.
Walter Roberson
on 14 Jul 2015
col24 = BigTable{:,[2 4]};
u24 = unique(col24, 'rows');
numentry = size(u24,1);
TableCell = cell(numentry,1);
for K = 1 : numentry
insubset = BigTable{:,2} == u24(K,1) && BigTable{:,4} == u24(K,2);
TableCell{K} = BigTable(insubset,:);
end
4 Comments
Image Analyst
on 15 Jul 2015
Aren't those cell arrays when she asked about tables ?
Walter Roberson
on 15 Jul 2015
When you index a table with () you get a table as a result. When you index a table with {} you get the contents of the rows or columns as the result. See http://www.mathworks.com/help/matlab/matlab_prog/access-data-in-a-table.html
Walter Roberson
on 15 Jul 2015
Unfortunately I do not have R2014b or later and so cannot test any code that contains tables.
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!