How to find the index of string column in a table?

조회 수: 35 (최근 30일)
Elysi Cochin
Elysi Cochin 2023년 4월 25일
답변: Cris LaPierre 2023년 4월 25일
How to get the column ids of a table with string column.
LastName = {'Sanchez';'Johnson';'Li';'Diaz';'Brown'};
Age = [38;43;38;40;49];
Health = {'Fair';'Poor';'Excellent';'Good';'Fair'};
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];
T1 = table(LastName,Age,Health,Height,Weight,BloodPressure)
In the above example the first and third columns are of string datatype.
So I wanted to get
idx = [1 3];
How do I find the index of string column?

채택된 답변

Cris LaPierre
Cris LaPierre 2023년 4월 25일
First comment - none of your table variables are strings. They are cell arrays of character vectors. That may matter depending how you implement a solution.
There are a couple ways depending on what you ultimately want to do. If you want to extract the colums, see the Access Data in Tables doc page. Use this syntax: S = vartype(type); T{rows,S}
LastName = {'Sanchez';'Johnson';'Li';'Diaz';'Brown'};
Age = [38;43;38;40;49];
Health = {'Fair';'Poor';'Excellent';'Good';'Fair'};
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];
T1 = table(LastName,Age,Health,Height,Weight,BloodPressure)
T1 = 5×6 table
LastName Age Health Height Weight BloodPressure ___________ ___ _____________ ______ ______ _____________ {'Sanchez'} 38 {'Fair' } 71 176 124 93 {'Johnson'} 43 {'Poor' } 69 163 109 77 {'Li' } 38 {'Excellent'} 64 131 125 83 {'Diaz' } 40 {'Good' } 67 133 117 75 {'Brown' } 49 {'Fair' } 64 119 122 80
S = vartype("cell");
T1(:,S)
ans = 5×2 table
LastName Health ___________ _____________ {'Sanchez'} {'Fair' } {'Johnson'} {'Poor' } {'Li' } {'Excellent'} {'Diaz' } {'Good' } {'Brown' } {'Fair' }
However, if you do want the index number, the most direct way I can think of is to use varfun with iscell.
idx_LI = varfun(@iscell,T1,'OutputFormat','uniform')
idx_LI = 1×6 logical array
1 0 1 0 0 0
C = 1:width(T1);
idx = C(idx_LI)
idx = 1×2
1 3

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Cell Arrays에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by