extract data with unique ID
2 次查看(过去 30 天)
显示 更早的评论
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
0 个评论
采纳的回答
Daniel M
2019-10-30
As Walter also suggested:
[~,~,locGroups] = unique(subs(:,1));
% also look at [~,~,locGroups] = unique(subs(:,1),'stable');
A = splitapply(@(v) {v}, subs, locGroups);
更多回答(1 个)
Walter Roberson
2019-10-30
Take the third output of unique() instead of the first. Or use findgroups()
splitapply() can also be used to do the splitting.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Data Type Conversion 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!