Get new variable if a cell in a column changes - Matlab

1 view (last 30 days)
I have a cell-type variable X and I would like to have variable X separated in different variables for each different Firm (X(:,1). Meaning, everytime Firm name changes I get a new variable. Example:
X:
Firm
'ABC' 0,5 46 19970224
'ABC' 0,6 29 19970424
'EFD' 0,5 145 19970218
'EFD' 0,5 36 19970206
'GHI' 0,7 9 19971023
'LMN' 0,2 735 19970311
I would like to get:
X1:
'ABC' 0,5 46 19970224
'ABC' 0,6 29 19970424
X2:
'EFD' 0,5 145 19970218
'EFD' 0,5 36 19970206
X3:
'GHI' 0,7 9 19971023
X4:
'LMN' 0,2 735 19970311
Can anyone help? Considering my variable type is 'cell', with both strings and numbers.

Accepted Answer

Azzi Abdelmalek
Azzi Abdelmalek on 25 Jun 2014
firm={'ABC' 0,5 46 19970224
'ABC' 0,6 29 19970424
'EFD' 0,5 145 19970218
'EFD' 0,5 36 19970206
'GHI' 0,7 9 19971023
'LMN' 0,2 735 19970311}
[a,b,c]=unique(firm(:,1))
out=accumarray(c,(1:numel(c))',[],@(x) {firm(x,:)})
out{1}
out{2}
out{3}
out{4}
  5 Comments
Maria
Maria on 26 Jun 2014
It works! And I guess if I want to sort by a specif column I just add like this:
FAF3_97=cellfun(@(x) sortrows(x,[1, 13]),FAF2_97,'un',0);
At least it seems to be working! Thank you :)

Sign in to comment.

More Answers (0)

Categories

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