Filter a table by 2 columns
Mostrar comentarios más antiguos
Hi, I'm using 'patients' (load patients) to learn more about tables. I'm trying to filter the table by gender and smoker status by following
load patients
T = table(LastName,Age,Smoker,Gender)
Tsmokermale=(T.Smoker==true| T.Gender=='Male');
but get the error
Undefined operator '==' for input arguments of type 'cell'.
How can I filter the table by male and smoker, and still keep the information of LastName and Age?
2 comentarios
madhan ravi
el 19 de Feb. de 2019
please show how you are forming a table
Orongo
el 27 de Feb. de 2019
Respuestas (2)
Peter Perkins
el 11 de Mzo. de 2019
Orongo, do this:
T.Gender = categorical(T.Gender);
Then this
Tsmokermale=(T.Smoker==true| T.Gender=='Male');
works as you expect, and what you are really asking about is this
T(Tsmokermale,:)
Long story short: Gender in the mat file is what's called a cell array of char vectors (a.k.a. a "cellstr"). Those don't support testing using ==, thus KSSV's suggestion of strcmp. But if you convert them to categorical, you can use ==. You could also convert to string, but categorical is more appropriate in this case.
1 comentario
Ishwor Koirala
el 21 de Dic. de 2022
That worked for me. Thank you very much :)
KSSV
el 19 de Feb. de 2019
idx = strcmp(T.Gender,'Male') ;
1 comentario
Orongo
el 27 de Feb. de 2019
Editada: madhan ravi
el 27 de Feb. de 2019
Categorías
Más información sobre Tables en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!