Look up a value in another array
6 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I have one array which lists the max values for column of column B for each unique item in column A as follows:
'888888888888888888880001' -40
'888888888888888888880002' -47
I have the following array and I would like to find the column A and column B that match with the first row in the above array, and create a new array which adds the column C value for: '888888888888888888880001' -40 to the array. Then do the same thing for the second row in the table above and add it to the same array.
'888888888888888888880001' -66 9
'888888888888888888880001' -52 10
'888888888888888888880001' -47 20
'888888888888888888880001' -56 26
'888888888888888888880001' -47 38
'888888888888888888880001' -51 42
'888888888888888888880001' -40 47
'888888888888888888880001' -40 54
'888888888888888888880002' -50 44
'888888888888888888880002' -47 57
The result of this should be an array of 2 rows:
'888888888888888888880001' -40 47
'888888888888888888880002' -47 57
There are two places that have -40 and I just need it to have either of those values in the final array, but not both.
Any help would be greatly appreciated. Thanks.
0 commentaires
Réponse acceptée
Andrei Bobrov
le 12 Nov 2013
Modifié(e) : Andrei Bobrov
le 12 Nov 2013
EDIT
d1 = [data(:,1), cellfun(@num2str,data(:,2),'un',0)];
a1 = [A(:,1),cellfun(@num2str,A(:,2),'un',0)];
[lk,i2] = ismember(data(:,1),A(:,1));
d1 = [i2(lk) cell2mat(data(lk,2:3))];
a1 = [(1:size(A,1))', cell2mat(A(:,2))];
[lc2,ii2] = ismember(d1(:,1:2),a1,'rows');
data1 = data(lc2,:);
% corrected below
idx = accumarray(ii2(lc2),(1:size(d1(lc2,:),1))',[],@(x)x(randi(numel(x))));
out = data1(idx,:);
5 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Resizing and Reshaping Matrices dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!