Split String in a Table

6 ビュー (過去 30 日間)
Aldrich To
Aldrich To 2015 年 11 月 10 日
コメント済み: Stephen23 2024 年 10 月 22 日
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!

回答 (1 件)

Tejas
Tejas 2024 年 10 月 22 日
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 件のコメント
Stephen23
Stephen23 2024 年 10 月 22 日
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"

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeCharacters and Strings についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by