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?

 Réponse acceptée

Rik
Rik le 2 Fév 2018
Modifié(e) : Rik le 2 Fév 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 commentaires

Thank you for your help!
Rik
Rik le 5 Fév 2020
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'),:)=[];
Thanks!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Variables dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by