How to filter data from table using multiple strings

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?

 채택된 답변

dpb
dpb 2017년 5월 8일
편집: dpb 2017년 5월 8일
>> 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

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.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Tables에 대해 자세히 알아보기

질문:

2017년 5월 8일

댓글:

2017년 5월 9일

Community Treasure Hunt

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

Start Hunting!

Translated by