How to remove all rows from categorical variable corresponding to a double array?

3 visualizaciones (últimos 30 días)
Assuming the following data and Table X:
A=[ 1 5 0 3 9]';
B=[ 2 9 5 8 0 ]';
C={'S1','S2','S3','S4','S5'}';
C = categorical(C);
X = table(C,A,B);
...and removing the rows with zeros
A1 = A(A(:,1) > 0, :);
B1 = B(B(:,1) > 0, :);
How do I now remove the corresponding rows from C that were removed in A and B, and make a new table X1 that contains A1, B1, and C1? I know have have to using indexing to determine which categories of C correspond to the rows that were removed, I'm just not sure how to do that.

Respuesta aceptada

Fangjun Jiang
Fangjun Jiang el 9 de Mzo. de 2018
index=and(A(:,1) > 0,B(:,1) > 0)
X1=X(index,:)

Más respuestas (1)

Peter Perkins
Peter Perkins el 15 de Mzo. de 2018
You might find this more expressive, and it doesn't require the original vectors, which you may have chosen to delete afer putting them in the table X:
X2 = X(X.A>0 & X.B>0,:)

Categorías

Más información sobre Logical en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by