matching based on a condtion cell table
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
sensation
am 19 Okt. 2017
Kommentiert: Cam Salzberger
am 19 Okt. 2017
Hi, I have a cell with:
'ABA1'
'ABO1'
'ACE3'
'ACE4'
Then I have a table with:
'AAYUC01' 3.7
'ABA1' 4.5
'ABA2' 4.5
'ABENVD1' 4360
'ABO1' 7521.3
How I can find the matching between my table and cell so that result is:
'ABA1' 4.5
'ABO1' 7521.3
Thanks a lot!
1 Kommentar
Jan
am 19 Okt. 2017
It is easier to write an answer, if you provide the inputs, such that they can be used by copy&paste. Otherwise all readers have to do this by their own and remove the tedious empty lines.
Akzeptierte Antwort
Cam Salzberger
am 19 Okt. 2017
Bearbeitet: Cam Salzberger
am 19 Okt. 2017
Hello,
I believe that ismember is your friend here. It will produce a logical array indicating which rows' elements are contained within your first set. You can then use that to index into the table.
C = {'A' ; 'B' ; 'C'};
T = table({'A' ; 'X' ; 'C' ; 'Y'}, (1:4).');
whichRows = ismember(T{:, 1}, C);
T(whichRows, :)
This is just a simple example, but easily adapted to your data.
-Cam
2 Kommentare
Cam Salzberger
am 19 Okt. 2017
What I thought you wanted was only the rows of the table who have their first column values present in the cell array. Which means you want to have the table as the first input argument to ismember.
If it's giving you an error about "cell/ismember", that means your first input argument is a cell array. Try switching them.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Characters and Strings finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!