extract data with unique ID

Hi,
I have already read a lot regarding accumarray and examples but still struggling with this one.
I have data of 1500*19 columns where in the column e.g. 14 are data that I want to use as a unique ID in order to extract all other columns as a separate arrays with the same unique ID.
my example where unique id is in column 1:
subs = [1 1 5 6 ;2 1 4 5;3 1 4 5;1 1 2 5;2 1 5 8;4 1 4 8;2 1 7 8;4 1 5 4;2 1 2 2;1 2 5 5] % data
subs_unique=unique(subs(:,1)) % identifying the unique id in column 1 but it can also be column 14
A = accumarray(subs,subs_unique,[],@(x) {x}) % gives an error
desired result:
A{1}= [1 1 5 6;1 1 2 5;1 2 5 5]
A{2}=[2 1 4 5,2 1 5 8;2 1 7 8;2 1 2 2] and so on
Thansk a lot,
Cheers,
Mark

 Respuesta aceptada

Daniel M
Daniel M el 30 de Oct. de 2019

0 votos

As Walter also suggested:
[~,~,locGroups] = unique(subs(:,1));
% also look at [~,~,locGroups] = unique(subs(:,1),'stable');
A = splitapply(@(v) {v}, subs, locGroups);

Más respuestas (1)

Walter Roberson
Walter Roberson el 30 de Oct. de 2019

0 votos

Take the third output of unique() instead of the first. Or use findgroups()
splitapply() can also be used to do the splitting.

Categorías

Preguntada:

el 30 de Oct. de 2019

Comentada:

el 31 de Oct. de 2019

Community Treasure Hunt

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

Start Hunting!

Translated by