# How to split a table column into two seperate columns

77 views (last 30 days)
Cem Akinci on 2 May 2022
Commented: Star Strider on 2 May 2022
I have a table which looks like this:
I want to split column a into two seperate columns from the delimiter "\" such that first column will be like 'AIVA-100' and the other column will be '01_Test.....'.
I want to do this for every element in column a. In the end, i will have 2 columns with the elements of column a.
I tried to iterate through the table and split using the delimiter but i couldn't do it

Star Strider on 2 May 2022
The regexp function works with cell arrays easily —
C = {'AIVA-100\something'; 'AIVA-75\something else'};
Cs = regexp(C,'\','split')
Cs = 2×1 cell array
{1×2 cell} {1×2 cell}
Cs{1}
ans = 1×2 cell array
{'AIVA-100'} {'something'}
Cs{2}
ans = 1×2 cell array
{'AIVA-75'} {'something else'}
Cs = cellfun(@(x)split(x,'\'), C, 'Unif',0) % The 'split' Function Requires 'cellfun'
Cs = 2×1 cell array
{2×1 cell} {2×1 cell}
Cs{1}
ans = 2×1 cell array
{'AIVA-100' } {'something'}
Cs{2}
ans = 2×1 cell array
{'AIVA-75' } {'something else'}
.
Star Strider on 2 May 2022
As always, my pleasure!

Dyuman Joshi on 2 May 2022
y = {'AIVA_1\abc';'AIVA_12\def';'AIVA_123\xyz'}
y = 3×1 cell array
{'AIVA_1\abc' } {'AIVA_12\def' } {'AIVA_123\xyz'}
z=split(y,'\')
z = 3×2 cell array
{'AIVA_1' } {'abc'} {'AIVA_12' } {'def'} {'AIVA_123'} {'xyz'}
column1 = z(:,1)
column1 = 3×1 cell array
{'AIVA_1' } {'AIVA_12' } {'AIVA_123'}
column2 = z(:,2)
column2 = 3×1 cell array
{'abc'} {'def'} {'xyz'}
Cem Akinci on 2 May 2022
The elements in column a are cells and not a cell array, hence i cannot use the split function for those. Do you know how can i convert those cells into a cell array?

Matt Butts on 2 May 2022
Not super elegant, but you could use something like:
t = table() % your table
% Split by tokens to grab the first part of a and put it back into a, put
% the remainder in new_a
[t{:,'a'},t{:,'new_a'}] = strtok(t{:,'a'},'\');
% Get rid of the leading delimiter in new_a and put the results back into
% new_a
t{;,'new_a'} = strtok(t{:,'new_a'},'\');

### Categories

Find more on Data Type Conversion in Help Center and File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by