I would like to subset a table into columns before a certain variable and columns after that variable. Is there a way to locate a column number within a table? Is there a more clever way to do this?
load patients
BloodPressure = [Systolic Diastolic];
T = table(Gender,Age,Smoker,BloodPressure,'RowNames',LastName);
A = *findColNumber*(T, 'Age'); % Some function that will locate the column number of 'Age'.
T1 = T(:, 1:A);
T2 = T(:, A+1:end);
'patients' is a standard example data set included in R2014a. Entering the command 'load patients' should load the relevant data.
Thanks!

 채택된 답변

Mohammad Abouali
Mohammad Abouali 2014년 10월 8일

4 개 추천

Table variable have property fields
you can use that to find the column number like this
find(strcmpi(T.Properties.VariableNames,'Age'))
ans =
2

댓글 수: 4

Image Analyst
Image Analyst 2014년 10월 8일
Cool - I didn't know about that. You taught me something. Of course he still won't be able to do what he wants to do (I tried).
load patients
BloodPressure = [Systolic Diastolic];
T = table(Gender,Age,Smoker,BloodPressure,'RowNames',LastName);
A = find(strcmpi(T.Properties.VariableNames,'Age'));
T1 = T(:, 1:A);
T2 = T(:, A+1:end);
Strange. This works for me.
And I have learned also a lot from your posts and your matlab examples.
Image Analyst
Image Analyst 2014년 10월 8일
편집: Image Analyst 2014년 10월 8일
Yeah, your T is slightly different than mine. No time now, but tomorrow I'll have to investigate why your code and mine behave differently and have slightly different T's. You'd think they should be the same even though they were gotten in different ways.
Actually I just figured it out. With my code, load() returns T as a structure not a table. So that makes sense.
Robot
Robot 2014년 10월 9일
Thanks for the help!

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Image Analyst
Image Analyst 2014년 10월 7일

0 개 추천

You don't need the column number. Just do
ages = T.Age;

댓글 수: 3

Robot
Robot 2014년 10월 7일
Thanks for the response, however T.Age will return the values within column 'Age'. I am looking for the column number for 'Age' (IE: A = 2).
Image Analyst
Image Analyst 2014년 10월 8일
편집: Image Analyst 2014년 10월 8일
You can get the age column like this:
T = load('patients')
ageColumn = find(ismember(fieldnames(T), 'Age'))
Image Analyst
Image Analyst 2014년 10월 8일
Actually T is a structure, so I recommend Mohammad's way.

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

질문:

2014년 10월 7일

댓글:

2014년 10월 9일

Community Treasure Hunt

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

Start Hunting!

Translated by