Is there such a table units identification approach?

4 ビュー (過去 30 日間)
Leon
Leon 2020 年 10 月 21 日
コメント済み: Leon 2020 年 10 月 21 日
Imagine I have a table T1. We know its units will be
Units = T1.Properties.VariableUnits;
Similarly, its header will be
Headers = T1.Properties.VariableNames;
If I know the location of the VariableName, I can find its units easily. For example, if I know Header #35 is "dissolved_oxygen", I can find its unit easily as Units{35}. The thing is that sometimes I may not know the location of the VariableName. The only thing I know is its variableName Is there a similar approach like the Table values?
Column = T1.dissolved_oxygen;
I tried the below and it did not work:
Unit = Units.dissolved_oxygen;
Many thanks!

採用された回答

Steven Lord
Steven Lord 2020 年 10 月 21 日
Let's make a sample table and give it some units:
>> load patients
>> patients = table(LastName,Gender,Age);
>> patients.Properties.VariableUnits{1} = 'person';
>> patients.Properties.VariableUnits{2} = 'N/A';
>> patients.Properties.VariableUnits{3} = 'years';
Extract the variable names and units from the table:
>> names = patients.Properties.VariableNames;
>> units = patients.Properties.VariableUnits;
Get the units associated with the variable named Age:
>> units(names == "Age")
If you have multiple variable names, use ismember with two outputs to determine which element of the names array corresponds to the variable names you seek.
  1 件のコメント
Leon
Leon 2020 年 10 月 21 日
Many thanks!
This is what I'm looking for. I find curly parenthesis works even better.
units{names == "Age"}

サインインしてコメントする。

その他の回答 (1 件)

drummer
drummer 2020 年 10 月 21 日
Try this:
opts = detectImportOptions('yourXLfile.xlsx')
opts.selectedVariableNames = {'dissolved_oxygen'};
T1 = readtable('yourXLfile.xlsx', opts);
summary(T1)
Cheers.
  4 件のコメント
drummer
drummer 2020 年 10 月 21 日
I made a different approach from Stephen's, using the same example.
His approach is more dynamic, though. I walked through all the headers.
T = readtable('patients.dat');
headers = T.Properties.VariableNames
for i = 1 : numel(headers)
if strcmp(headers(i), 'Gender') == 1 % if the header is your variable of interest
i % you could replace here by your Unit{i}, for example.
end
end
Leon
Leon 2020 年 10 月 21 日
Many thanks for sharing!

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeTables についてさらに検索

製品


リリース

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by