matlab如何创建table,创建和使用表- MATLAB & Simulink- MathWorks 中国

创建并查看表

将 100 位患者的样本数据从 patients MAT 文件加载到工作区变量中。

load patients

whos

Name Size Bytes Class Attributes

Age 100×1 800 double

Diastolic 100×1 800 double

Gender 100×1 11412 cell

Height 100×1 800 double

LastName 100×1 11616 cell

Location 100×1 14208 cell

SelfAssessedHealthStatus 100×1 11540 cell

Smoker 100×1 100 logical

Systolic 100×1 800 double

Weight 100×1 800 double

使用包含患者数据的列向变量填充表。您可以按名称访问和分配表变量。当您从工作区变量分配表变量时,您可以为表变量指定不同名称。

创建一个表并使用 Gender、Smoker、Height 和 Weight 工作区变量填充它。显示前五行。

T = table(Gender,Smoker,Height,Weight);

T(1:5,:)

ans=5×4 table

Gender Smoker Height Weight

__________ ______ ______ ______

{‘Male’ } true 71 176

{‘Male’ } false 69 163

{‘Female’} false 64 131

{‘Female’} false 67 133

{‘Female’} false 64 119

作为备选方法,可以使用 readtable 函数从逗 分隔文件中读取患者数据。readtable 会读取文件中的所有列。

通过读取文件 patients.dat 中的所有列来创建一个表。

T2 = readtable(‘patients.dat’);

T2(1:5,:)

ans=5×10 table

LastName Gender Age Location Height Weight Smoker Systolic Diastolic SelfAssessedHealthStatus

____________ __________ ___ _____________________________ ______ ______ ______ ________ _________ ________________________

{‘Smith’ } {‘Male’ } 38 {‘County General Hospital’ } 71 176 1 124 93 {‘Excellent’}

{‘Johnson’ } {‘Male’ } 43 {‘VA Hospital’ } 69 163 0 109 77 {‘Fair’ }

{‘Williams’} {‘Female’} 38 {‘St. Mary’s Medical Center’} 64 131 0 125 83 {‘Good’ }

{‘Jones’ } {‘Female’} 40 {‘VA Hospital’ } 67 133 0 117 75 {‘Fair’ }

{‘Brown’ } {‘Female’} 49 {‘County General Hospital’ } 64 119 0 122 80 {‘Good’ }

您可以使用圆点表示法 T.varname 分配多个列向表变量,其中 T 是表,varname 是所需的变量名称。创建随机的数字标识符。然后,将其赋给一个表变量,并将该表变量命名为 ID。您分配到表中的所有变量必须具有相同的行数。显示 T 的前五行。

T.ID = randi(1e4,100,1);

T(1:5,:)

ans=5×5 table

Gender Smoker Height Weight ID

__________ ______ ______ ______ ____

{‘Male’ } true 71 176 8148

{‘Male’ } false 69 163 9058

{‘Female’} false 64 131 1270

{‘Female’} false 67 133 9134

{‘Female’} false 64 119 6324

您分配到表中的所有变量必须具有相同的行数。

使用 summary 函数创建汇总表来查看每个变量的数据类型、说明、单位和其他描述性统计量。

summary(T)

Variables:

Gender: 100×1 cell array of character vectors

Smoker: 100×1 logical

Values:

True 34

False 66

Height: 100×1 double

Values:

Min 60

Median 67

Max 72

Weight: 100×1 double

Values:

Min 111

Median 142.5

Max 202

ID: 100×1 double

Values:

Min 120

Median 5485.5

Max 9706

返回表的大小。

size(T)

ans = 1×2

100 5

T 包含 100 行和 5 个变量。

创建一个新的包含 T 中前五行的较小表并显示该表。您可以在括 中使用数值索引指定行和变量。此方法类似于通过索引数值数组来创建子数组的情况。Tnew 是一个 5×5 的表。

Tnew = T(1:5,:)

Tnew=5×5 table

Gender Smoker Height Weight ID

__________ ______ ______ ______ ____

{‘Male’ } true 71 176 8148

{‘Male’ } false 69 163 9058

{‘Female’} false 64 131 1270

{‘Female’} false 67 133 9134

{‘Female’} false 64 119 6324

创建一个包含 Tnew 中所有行以及第二至最后行中的变量的较小表。使用 end 关键字指示表的最后一个变量或最后一行。Tnew 是一个 5×4 的表。

Tnew = Tnew(:,2:end)

Tnew=5×4 table

Smoker Height Weight ID

______ ______ ______ ____

true 71 176 8148

false 69 163 9058

false 64 131 1270

false 67 133 9134

false 64 119 6324

按行和变量名称访问数据

使用行和变量名称而非数值索引向 T 中添加行名称并对表进行索引。通过将 LastName 工作区变量赋给 T 的 RowNames 属性来添加行名称。

T.Properties.RowNames = LastName;

显示 T 的前五行以及行名称。

T(1:5,:)

ans=5×5 table

Gender Smoker Height Weight ID

__________ ______ ______ ______ ____

Smith {‘Male’ } true 71 176 8148

Johnson {‘Male’ } false 69 163 9058

Williams {‘Female’} false 64 131 1270

Jones {‘Female’} false 67 133 9134

Brown {‘Female’} false 64 119 6324

返回 T 的大小。此大小不会更改,因为在计算表大小时不会包括行和变量名称。

size(T)

ans = 1×2

100 5

选择姓氏为 ‘Smith’ 和 ‘Johnson’ 的患者的所有数据。在本例中,使用行名称比使用数值索引更为简单。Tnew 是一个 2×5 的表。

Tnew = T({‘Smith’,’Johnson’},:)

Tnew=2×5 table

Gender Smoker Height Weight ID

________ ______ ______ ______ ____

Smith {‘Male’} true 71 176 8148

Johnson {‘Male’} false 69 163 9058

通过变量名称索引来选择名为 ‘Johnson’ 的患者的身高和体重。Tnew 是一个 1×2 的表。

Tnew = T(‘Johnson’,{‘Height’,’Weight’})

Tnew=1×2 table

Height Weight

______ ______

Johnson 69 163

您可以使用圆点语法访问表变量(如 T.Height 中所示),也可以按命名索引访问表变量(如 T(:,’Height’) 中所示)。

计算结果并将其添加为表变量

您可以访问表变量的内容,然后使用 MATLAB? 函数对它们执行计算。根据现有表变量中的数据计算体质指数 (BMI),并将其添加为新变量。绘制 BMI 与患者状态为烟民或非烟民的关系图。向表中添加血压读数,并绘制血压与 BMI 的关系图。

使用表变量 Weight 和 Height 计算 BMI。您可以提取 Weight 和 Height 以进行计算,同时在包含其余患者数据的表中方便地保留 Weight、Height 和 BMI。显示 T 的前五行。

T.BMI = (T.Weight*0.453592)./(T.Height*0.0254).^2;

T(1:5,:)

ans=5×6 table

Gender Smoker Height Weight ID BMI

__________ ______ ______ ______ ____ ______

Smith {‘Male’ } true 71 176 8148 24.547

Johnson {‘Male’ } false 69 163 9058 24.071

Williams {‘Female’} false 64 131 1270 22.486

Jones {‘Female’} false 67 133 9134 20.831

Brown {‘Female’} false 64 119 6324 20.426

填充 BMI 的变量单位和变量说明属性。您可以将元数据添加到任何表变量中,以进一步描述该变量中包含的数据。

T.Properties.VariableUnits{‘BMI’} = ‘kg/m^2’;

T.Properties.VariableDescriptions{‘BMI’} = ‘Body Mass Index’;

创建一个直方图以探索这组患者的吸烟与体质指数之间是否存在关系。您可以使用 Smoker 表变量中的逻辑值来索引 BMI,这是因为每行都包含同一患者的 BMI 和 Smoker 值。

tf = (T.Smoker == false);

h1 = histogram(T.BMI(tf),’BinMethod’,’integers’);

hold on

tf = (T.Smoker == true);

h2 = histogram(T.BMI(tf),’BinMethod’,’integers’);

xlabel(‘BMI (kg/m^2)’);

ylabel(‘Number of Patients’);

legend(‘Nonsmokers’,’Smokers’);

title(‘BMI Distributions for Smokers and Nonsmokers’);

hold off

对表变量和输出行进行重新排序

要准备表进行输出,请按名称重新排列该表行的顺序,并按位置或名称重新排列表变量。显示表的最终排列。

按行名称对表进行排序,以使患者按字母顺序列出。

T = sortrows(T,’RowNames’);

T(1:5,:)

ans=5×8 table

Gender Smoker Height Weight ID BMI Systolic Diastolic

__________ ______ ______ ______ ____ ______ ________ _________

Adams {‘Female’} false 66 137 8235 22.112 127 83

Alexander {‘Male’ } true 69 171 1300 25.252 128 99

Allen {‘Female’} false 63 143 7432 25.331 113 80

Anderson {‘Female’} false 68 128 1577 19.462 114 77

Bailey {‘Female’} false 68 130 2239 19.766 113 81

创建一个 BloodPressure 变量,将血压读数保存在一个 100×2 的表变量中。

T.BloodPressure = [T.Systolic T.Diastolic];

从表中删除 Systolic 和 Diastolic,因为它们是冗余的。

T.Systolic = [];

T.Diastolic = [];

T(1:5,:)

ans=5×7 table

Gender Smoker Height Weight ID BMI BloodPressure

__________ ______ ______ ______ ____ ______ _____________

Adams {‘Female’} false 66 137 8235 22.112 127 83

Alexander {‘Male’ } true 69 171 1300 25.252 128 99

Allen {‘Female’} false 63 143 7432 25.331 113 80

Anderson {‘Female’} false 68 128 1577 19.462 114 77

Bailey {‘Female’} false 68 130 2239 19.766 113 81

要将 ID 作为第一列,请按位置重新排列表变量。

T = T(:,[5 1:4 6 7]);

T(1:5,:)

ans=5×7 table

ID Gender Smoker Height Weight BMI BloodPressure

____ __________ ______ ______ ______ ______ _____________

Adams 8235 {‘Female’} false 66 137 22.112 127 83

Alexander 1300 {‘Male’ } true 69 171 25.252 128 99

Allen 7432 {‘Female’} false 63 143 25.331 113 80

Anderson 1577 {‘Female’} false 68 128 19.462 114 77

Bailey 2239 {‘Female’} false 68 130 19.766 113 81

您还可以按名称对表变量进行重新排序。要重新排列表变量以使 Gender 成为最后一个变量,请执行以下操作:

在该表的 VariableNames 属性中查找 ‘Gender’。

将 ‘Gender’ 移到变量名称元胞数组末尾。

使用名称元胞数组重新排列表变量的顺序。

varnames = T.Properties.VariableNames;

others = ~strcmp(‘Gender’,varnames);

varnames = [varnames(others) ‘Gender’];

T = T(:,varnames);

显示经过重新排序的表的前五行。

T(1:5,:)

ans=5×7 table

ID Smoker Height Weight BMI BloodPressure Gender

____ ______ ______ ______ ______ _____________ __________

Adams 8235 false 66 137 22.112 127 83 {‘Female’}

Alexander 1300 true 69 171 25.252 128 99 {‘Male’ }

Allen 7432 false 63 143 25.331 113 80 {‘Female’}

Anderson 1577 false 68 128 19.462 114 77 {‘Female’}

Bailey 2239 false 68 130 19.766 113 81 {‘Female’}

将表写入文件

您可以将整个表写入文件,或创建一个子表来将原始表的选定部分写入一个单独的文件。

使用 writetable 函数将 T 写入文件。

writetable(T,’allPatientsBMI.txt’);

您可以使用 readtable 函数将 allPatientsBMI.txt 中的数据读入新表中。

创建一个子表并将其写入一个单独的文件中。删除包含烟民患者数据的行。然后删除 Smoker 变量。nonsmokers 仅包含非烟民患者的数据。

nonsmokers = T;

toDelete = (nonsmokers.Smoker == true);

nonsmokers(toDelete,:) = [];

nonsmokers.Smoker = [];

将 nonsmokers 写入文件。

writetable(nonsmokers,’nonsmokersBMI.txt’);

相关资源:MinionProfitsTracker:随着市场价格波动,轻松识别最赚钱的奴才[在…

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年2月12日
下一篇 2021年2月12日

相关推荐