How do you split a table into sub-tables based on entries in a specific column?

107 次查看(过去 30 天)
How do you split a table into sub-tables based on entries in a specific column? Essentially, I want to divide my table data into groups, determined by one of its values.

采纳的回答

MathWorks Support Team
编辑:MathWorks Support Team 2022-10-13
I have created a simple example which demonstrates how to split a table based on the first column as the category variable.
The script is also attached as "test_script.m". Please read the comments to get a better understanding of how to use the script for your use case.
% Patient pateint data
load patients
% Create test table
T = table(Gender(1:5), Height(1:5), 'VariableNames', {'Gender', 'Height'});
% Group based on first column - gender column
% Modify 1 to appropriate column number
G = findgroups(T{:, 1});
% Split table based on first column - gender column
T_split = splitapply( @(varargin) varargin, T , G);
% Allocate empty cell array fo sizxe equal to number of rows in T_Split
subTables = cell(size(T_split, 1));
% Create sub tables
for i = 1:size(T_split, 1)
subTables{i} = table(T_split{i, :}, 'VariableNames', ...
T.Properties.VariableNames);
end
% Display Results
disp('Full Table:');
disp(T);
disp('Sub Table 1:');
disp(subTables{1});
disp('Sub Table 2:');
disp(subTables{2});
See this documentation for another example of using 'splitapply':
Here is a list of the functions I am using:

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 String Parsing 的更多信息

产品


版本

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by