这个例子展示了如何从工作空间变量,创建一个表与表数据和表写入文件,供以后使用。表
是收集的数据类型异构数据和元数据的属性,如变量名,行名称,描述,和可变单元,在一个容器中。
表适合用于或表格数据经常作为列存储在一个文本文件或表格。表中的每个变量可以具有不同的数据类型,但是必须有相同数量的行。然而,表中的变量并不是局限于列向量。例如,表变量可以包含多个列的矩阵,只要它有相同数量的行与其他表变量。一个典型的使用一个表来存储实验数据,行代表不同的观察和列代表不同测量变量。
表方便的容器收集和整理相关数据变量和用于查看和总结数据。例如,您可以提取变量进行计算和方便地添加新表结果变量。当你完成你的计算,写表文件来保存结果。
从工作空间变量创建一个表和视图。另外,使用导入工具或者是readtable
从电子表格函数来创建一个表或一个文本文件。从文件导入数据时使用这些函数,每一列成了表变量。
负载为100名患者的样本数据病人
MAT-file工作空间变量。
负载病人谁
类属性名称大小字节100岁x1 800双舒张压100 x1 800双性别100 x1 11412细胞高度100 x1 800双LastName 100 x1 11616细胞位置100 x1 14208细胞SelfAssessedHealthStatus 100 x1 11540细胞吸烟者100 x1 100逻辑收缩压100 x1 800双重量100 x1 800双
用用于填充一个表包含病人数据的变量。您可以访问和分配表变量的名字。当你分配一个表变量从一个工作空间变量,您可以分配表变量一个不同的名称。
创建一个表并填充它性别
,吸烟者
,高度
,重量
工作空间变量。显示前五行。
T =表(性别、吸烟、身高、体重);:T (1:5)
ans =5×4表看上去性别吸烟者身高体重__________长得一样{‘男性’}真71 176{‘男性’}假69 163{‘女性’}假64 131{‘女性’}假67 133{‘女性’}假64 119
作为一种替代方法,使用readtable
函数来读取病人数据从一个用逗号分隔的文件。readtable
读取一个文件中的所有列。
创建一个表通过阅读所有列的文件,patients.dat
。
T2 = readtable (“patients.dat”);:T2 (1:5)
ans =5×10表LastName性别年龄位置身高体重吸烟者收缩压舒张压SelfAssessedHealthStatus _______ __________ ___看上去_____________________________长得一样________ _____ ________________________{“史密斯”}{‘男性’}38{县综合医院的}71 176 1 124 93{‘优秀’}{“约翰逊”}{‘男性’}43 {VA医院的}69 163 0 109 77{‘公平’}{威廉姆斯的}{‘女性’}38{圣。玛丽的医学中心}64 131 0 125 83{‘好’}{“琼斯”}{‘女性’}40 {VA医院的}67 133 0 117 75{‘公平’}{“棕色”}{‘女性’}49{县综合医院的}64 119 0 122 80{‘好’}
你可以分配更多用于表变量使用点符号,T.varname
,在那里T
表和varname
是所需的变量名。创建随机数的标识符。然后将它们分配给一个表变量,变量命名表ID
。所有的变量分配给一个表必须有相同数量的行。显示前五行T
。
T。ID= randi(1e4,100,1); T(1:5,:)
ans =5×5表看上去性别吸烟者身高体重ID __________长得一样__{‘男性’}真71 176 8148{‘男性’}假69 163 9058{‘女性’}假64 131 1270{‘女性’}假67 133 9134{‘女性’}假64 119 6324
所有的变量分配给一个表必须有相同数量的行。
视图的数据类型,描述、单位、和其他描述性统计每个变量通过创建一个表总结使用总结
函数。
总结(T)
变量:性别:100 x1单元阵列特征向量的吸烟者:100 x1逻辑值:对34个错66高度:100 x1双重价值:60分钟中等67 Max 72重量:x1双重价值:100分钟111中位数142.5 Max 202 ID: x1双重价值:100分钟120中位数5485.5 Max 9706
返回表的大小。
大小(T)
ans =1×2100年5
T
包含100行和5个变量。
创建一个新的,较小的表包含前五行T
和显示。您可以使用括号内数字索引指定行和变量。这种方法类似于索引分成数字数组来创建。Tnew
是一个5-by-5表格。
:Tnew = T (1:5)
Tnew =5×5表看上去性别吸烟者身高体重ID __________长得一样__{‘男性’}真71 176 8148{‘男性’}假69 163 9058{‘女性’}假64 131 1270{‘女性’}假67 133 9134{‘女性’}假64 119 6324
创建一个小表包含的所有行Tnew
并从第二到最后的变量。使用结束
关键字表示最后一个变量或一个表的最后一行。Tnew
是一个5-by-4表格。
Tnew = Tnew(:, 2:结束)
Tnew =5×4表吸烟者看上去身高体重ID长得一样…真正的71 176 8148假69 163 9058假64 131 1270 64 119 6324 67 133 9134的错误
添加行名称T
和索引的表使用行和变量名称而不是数字指标。添加通过分配行名称姓
工作空间变量的RowNames
的属性T
。
T.Properties。RowNames= LastName;
显示前五行T
行名称。
:T (1:5)
ans =5×5表看上去性别吸烟者身高体重ID __________长得一样__史密斯{‘男性’}真的71 176 8148约翰逊{‘男性’}假69 163 9058威廉姆斯{‘女性’}假琼斯64 131 1270{‘女性’}假67 133 9134布朗{‘女性’}假64 119 6324
返回的大小T
。大小不会改变因为行和变量名称不包括在计算表的大小。
大小(T)
ans =1×2100年5
选择所有的数据最后一名患者“史密斯”
和“约翰逊”
。在这种情况下,它比使用更简单使用行名称的数字指标。Tnew
是一个2-by-5表格。
Tnew = T ({“史密斯”,“约翰逊”},:)
Tnew =2×5表看上去性别吸烟者身高体重ID ________长得一样__史密斯{‘男性’}真的71 176 8148约翰逊{‘男性’}假69 163 9058
选择病人的身高和体重“约翰逊”
通过索引变量名。Tnew
是一个1×2表格。
Tnew = T (“约翰逊”,{“高度”,“重量”})
Tnew =1×2表身高体重出生约翰逊69 163
您可以访问表变量用点语法,如T.Height
,或者通过指定索引,如T(:,“高度”)
。
您可以访问的内容表变量,然后使用MATLAB®函数执行计算。计算身体质量指数(身体质量指数
基于现有表中的数据变量并添加一个新的变量。情节的关系身体质量指数
病人的身份抽烟或不抽烟的人。血压数据添加到表中,和情节血压体重指数之间的关系。
计算身体质量指数
使用的表变量,重量
和高度
。您可以提取重量
和高度
计算而方便地保持重量
,高度
,身体质量指数
表中与其他病人的数据。显示前五行T
。
T。体重指数= (T.Weight * 0.453592)。/ (T.Height * 0.0254)。^ 2;:T (1:5)
ans =5×6表看上去性别吸烟者身高体重ID BMI __________长得一样__ ______史密斯{‘男性’}真的71 176 8148 24.547约翰逊{‘男性’}假69 163 9058 24.071威廉姆斯{‘女性’}假64 131 1270 22.486琼斯{‘女性’}假67 133 9134 20.831布朗{‘女性’}假64 119 6324 20.426
填充变量单位和变量描述的属性身体质量指数
。您可以添加元数据表变量来描述任何进一步的数据中包含的变量。
T.Properties.VariableUnits {“身体质量指数”}=公斤/ m ^ 2的;T.Properties.VariableDescriptions {“身体质量指数”}=“身体质量指数”;
创建一个直方图来探索是否有吸烟和这组患者的体重指数之间的关系。你可以,索引身体质量指数
逻辑值吸烟者
表变量,因为每一行包含身体质量指数
和吸烟者
值相同的病人。
tf = (T。吸烟者== false); h1 = histogram(T.BMI(tf),“BinMethod”,“整数”);持有在tf = (T。吸烟者== true); h2 = histogram(T.BMI(tf),“BinMethod”,“整数”);包含(“BMI(公斤/ m ^ 2)”);ylabel (“患者”);传奇(“不吸烟”,“烟民”);标题(“吸烟者和非吸烟者BMI分布”);持有从
为病人从工作区中添加血压读数变量收缩压
和舒张压
。每行包含收缩压
,舒张压
,身体质量指数
值相同的病人。
T。收缩压=收缩压;T。舒张期=舒张压;
创建一个直方图来显示是否有高的值之间的关系舒张压
和身体质量指数
。
tf = (T。身体质量指数<= 25); h1 = histogram(T.Diastolic(tf),“BinMethod”,“整数”);持有在tf = (T。身体质量指数> 25); h2 = histogram(T.Diastolic(tf),“BinMethod”,“整数”);包含(舒张期阅读(毫米汞柱)的);ylabel (“患者”);传奇(BMI < = 25的,“体重指数> 25”);标题(舒张压读数低和高BMI的);持有从
准备表输出,按名称排序表中的行和表变量的位置或名称。显示表的最终安排。
排序表的行名称,以便患者按字母顺序列出。
T = sortrows (T)“RowNames”);:T (1:5)
ans =5×8表性别吸烟者身高体重ID BMI收缩压舒张压看上去__________长得一样__ ______月______ _____亚当斯{‘女性’}假22.112 66 137 8235 127 83亚历山大{‘男性’}真的69 171 1300 25.252 128 99艾伦{‘女性’}假25.331 63 143 7432 113 80安德森{‘女性’}假19.462 68 128 1577 114 77贝利{‘女性’}假19.766 68 130 2239 113 81
创建一个血压
变量来保存血压读数在100 - 2表变量。
T。血压= [T。收缩压T。舒张压];
删除收缩压
和舒张压
因为它们是多余的。
T。收缩压= [];T。舒张期= [];:T (1:5)
ans =5×7表性别吸烟者身高体重看上去ID BMI血压__________长得一样__ ______ _________________亚当斯{‘女性’}假22.112 66 137 8235 127 83亚历山大{‘男性’}真的69 171 1300 25.252 128 99艾伦{‘女性’}假25.331 63 143 7432 113 80安德森{‘女性’}假19.462 68 128 1577 114 77贝利{‘女性’}假19.766 68 130 2239 113 81
把ID
第一列,排序表变量的位置。
T = T (: [5 1:4 6 7]);:T (1:5)
ans =5×7表BMI ID性别吸烟者身高体重血压____ __________交交_________________亚当斯8235{‘女性’}假66 137 22.112 127 83 1300年亚历山大{‘男性’}真的69 171 25.252 128 99艾伦7432{‘女性’}假安德森63 143 25.331 113 80 1577{‘女性’}假68 128 19.462 114 77贝利2239{‘女性’}假68 130 19.766 113 81
你也可以重新排序表变量的名字。所以重新排序表变量性别
最后:
找到“性别”
在VariableNames
表的属性。
移动“性别”
到最后单元阵列的变量名。
使用的单元阵列名称来重新排序表变量。
varnames = T.Properties.VariableNames;别人= ~ strcmp (“性别”,varnames);varnames = [varnames(别人)“性别”];T = T (:, varnames);
重新排序表的显示前五行。
:T (1:5)
ans =5×7表ID吸烟者身高体重BMI血压性别___交交_________________ __________亚当斯8235错误66 137 22.112 127 83{‘女性’}亚历山大1300真正的69 171 25.252 128 99{‘男性’}艾伦7432错误63 143 25.331 113 80{‘女性’}安德森1577错误68 128 19.462 114 77{‘女性’}贝利2239错误68 130 19.766 113 81{‘女性’}
您可以编写整个表到一个文件,或者创建一个原始表的子表编写一个选定的部分到一个单独的文件。
写T
一个文件writetable
函数。
writetable (T)“allPatientsBMI.txt”);
您可以使用readtable
函数来读取数据allPatientsBMI.txt
到一个新表。
创建一个小工作台和写子表到一个单独的文件。删除行包含吸烟患者的数据。然后删除吸烟者
变量。不吸烟者
只包含数据的患者不吸烟者。
不吸烟者= T;删除=(不吸烟者。吸烟者= = true);不吸烟者(删除:)= [];不吸烟者。吸烟者= [];
写不吸烟者
到一个文件。
writetable(不抽烟,“nonsmokersBMI.txt”);
array2table
|cell2table
|导入工具|readtable
|sortrows
|struct2table
|总结
|表
|writetable