How to filter data from table using multiple strings

4 visualizzazioni (ultimi 30 giorni)
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?

Risposta accettata

dpb
dpb il 8 Mag 2017
Modificato: dpb il 8 Mag 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 Commento
Peter Perkins
Peter Perkins il 9 Mag 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.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Tables in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by