How to filter data from table using multiple strings

5 vues (au cours des 30 derniers jours)
André Kanji
André Kanji le 8 Mai 2017
Commenté : Peter Perkins le 9 Mai 2017
I have a table(60000 by 20) in which one of the columns have the following codes(extracted data):
c={'EGGD';'CSED';'CSED';'CSED';'CSED';'AVVT';'LBEB';'EGGD';'LBEB'}
And I just want the data that correspond to 'CSED' and 'AVVT'(example), there are many more.
One of my solutions:
cell=table2cell(table)
rowsCSED=any(strcmp(cell,'CSED'),2);
rowsAVVT=any(strcmp(cell,'AVVT'),2);
rows=rowsCSED | rowsAVVT;
table(rows,:)
Is there any way to do this without reverting to a loop?

Réponse acceptée

dpb
dpb le 8 Mai 2017
Modifié(e) : dpb le 8 Mai 2017
>> t=table(categorical(c),'variablenames',{'Code'}); % put your data back into the table from whence it came
>> summary(t)
Variables:
Code: 9x1 categorical
Values:
AVVT 1
CSED 4
EGGD 2
LBEB 2
>> t(ismember(t.Code,{'CSED','AVVT'}),:) % look up the matching rows...
ans =
Code
____
CSED
CSED
CSED
CSED
AVVT
>>
NB: Such things work much better if you make the codings categorical variables rather than leaving as string data.
  1 commentaire
Peter Perkins
Peter Perkins le 9 Mai 2017
Using categorical becomes especially readable in the simpler case of finding only one category:
t(t.Code == 'CSED',:)
With two categories, you could use
t(t.Code=='CSED' | t.code =='AVVT',:)
but at some point, you're better off with ismember.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Tables 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!

Translated by