Split String in a Table
Show older comments
Hello,
I am attempting to split a string in a table. I am not sure what approach I should be taking. Do I convert the table into an array first, use strsplit, and then recombine arrays into a table?
When I try to use table2array, I get the following error: Cannot concatenate the table variables 'Arbitrary', because their types are double and cell.
Thanks!
Answers (1)
Tejas
on 22 Oct 2024
Hello Aldrich,
To split the strings in a column, follow the steps in the example below:
- Make sure the column with strings is a cell array of strings.
T = table([1; 2; 3], {'a,b,c'; 'd,e,f'; 'g,h,i'}, 'VariableNames', {'Numeric', 'StringColumn'});
- Go through each element of the column and store the split strings in a vector. For a better understanding of the 'function handle' used, refer to this documentation: https://www.mathworks.com/help/matlab/ref/function_handle.html .
splitStrings = cellfun(@(x) strsplit(x, ','), T.StringColumn, 'UniformOutput', false);
- Place these split strings into new, separate columns of the table.
maxSplits = max(cellfun(@length, splitStrings));
for i = 1:maxSplits
T.(['Part' num2str(i)]) = cellfun(@(x) x{i}, splitStrings, 'UniformOutput', false);
end
Below is a screenshot of the expected outcome:

1 Comment
Num = [1;2;3];
Str = ["a,b,c"; "d,e,f"; "g,h,i"];
tbl = table(Num,Str)
out = splitvars(convertvars(tbl,@isstring,@(s)split(s,',')))
Categories
Find more on Cell Arrays 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!