Split String in a Table

8 views (last 30 days)
Aldrich To
Aldrich To on 10 Nov 2015
Commented: Stephen23 on 22 Oct 2024
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
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'});
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
Stephen23
Stephen23 on 22 Oct 2024
Num = [1;2;3];
Str = ["a,b,c"; "d,e,f"; "g,h,i"];
tbl = table(Num,Str)
tbl = 3x2 table
Num Str ___ _______ 1 "a,b,c" 2 "d,e,f" 3 "g,h,i"
out = splitvars(convertvars(tbl,@isstring,@(s)split(s,',')))
out = 3x4 table
Num Str_1 Str_2 Str_3 ___ _____ _____ _____ 1 "a" "b" "c" 2 "d" "e" "f" 3 "g" "h" "i"

Sign in to comment.

Categories

Find more on Characters and Strings 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!