Table delete rows with specific value in column

I will ask my question by an example. I have a table, looks like:
T = table();
T.c1 = [1 2 1 1 1 2 1 2 2 ]';
T.c2 = ['a' 'a' 'a' 'b' 'b' 'a' 'a' 'a' 'b']';
T.c3 = ['a' 'b' 'a' 'a' 'b' 'a' 'b' 'a' 'a']';
T.c4 = [1 1 1 2 1 2 1 3 2 ]';
I want to delete all the rows (The complete row) that have 'b' in c2. Also, I want to delete all rows where c4 > c1. How can I do this efficiently?

 Accepted Answer

Rik
Rik on 2 Feb 2018
Edited: Rik on 2 Feb 2018
T = table();
T.c1 = [1 2 1 1 1 2 1 2 2 ]';
T.c2 = ['a' 'a' 'a' 'b' 'b' 'a' 'a' 'a' 'b']';
T.c3 = ['a' 'b' 'a' 'a' 'b' 'a' 'b' 'a' 'a']';
T.c4 = [1 1 1 2 1 2 1 3 2 ]';
T(ismember(T.c2,'b'),:)=[];
T(T.c4>T.c1,:)=[];

4 Comments

Thank you for your help!
Comment posted as answer by Matteo Soldini:
If I want to keep only the rows that have a certain value in a column (for example, all the rows that have 'b' in c2) and delete all the others, what should I do?
This code uses logical indexing, so you can just invert it. ismember returns a logical array, nothing is stopping you from doing something like this:
T(~ismember(T.c2,'b'),:)=[];

Sign in to comment.

More Answers (0)

Categories

Community Treasure Hunt

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

Start Hunting!