Filter a table by 2 columns
古いコメントを表示
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 件)
Peter Perkins
2019 年 3 月 11 日
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 件のコメント
Ishwor Koirala
2022 年 12 月 21 日
That worked for me. Thank you very much :)
KSSV
2019 年 2 月 19 日
idx = strcmp(T.Gender,'Male') ;
1 件のコメント
Orongo
2019 年 2 月 27 日
編集済み: madhan ravi
2019 年 2 月 27 日
カテゴリ
ヘルプ センター および File Exchange で Tables についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!