主要内容

创建和使用工作表

这个例子显示了如何创建工作空间的变量,使用表数据,并写入表一表,供以后使用的文件。桌子是用于收集异构数据和元数据属性,如变量名,行名称,描述,和可变单元,在单个容器中的数据类型。

表是适合于通常被存储为列的文本文件或电子表格中的列取向或表格数据。表中的每个变量可以有一个不同的数据类型,但必须具有相同的行数。然而,在一个表中的变量不限于列向量。例如,一个表变量可以,只要其具有相同的行数与其他表变量的包含具有多个列的矩阵。为一个表的一个典型应用是存储的实验数据,其中行表示不同的观察和列表示不同的测量变量。

表是用于收集和组织相关的数据变量和查看和汇总数据方便的容器。例如,您可以提取变量进行计算,并方便地添加结果作为新表变量。当你完成你的计算,编写表到一个文件来保存结果。

创建和查看表

从创建工作区变量表和查看。或者,使用导入工具或者readtable函数从电子表格或文本文件中创建一个表。当你使用这些功能从文件导入数据,每列成为表变量。

加载100例患者的样本数据耐心MAT文件到工作区中的变量。

负载耐心谁是
名称大小字节类属性年龄100X1 800双舒张100X1 800双性别100X1 11412细胞身高100X1 800双姓100X1 11616细胞位置100X1 14208细胞SelfAssessedHealthStatus 100X1 11540细胞吸烟者100X1 100逻辑收缩期100X1 800双重量100X1 800双

填充与包含患者数据面向列的变量表。您可以访问和名称分配表变量。当您从工作区变量赋值表变量,你可以指定表变量不同的名称。

创建一个表,并用它填充性别吸烟者高度, 和重量工作区的变量。显示前五行。

T =表(性别、吸烟、身高、体重);T(1:5,:)
ans =5×4表性别吸烟者身高体重__________ ______ ______ ______{'男'}true 71 176{'男'}false 69 163{'女'}false 64 131{'女'}false 67 133{'女'}false 64 119

作为替代方案,可以使用readtable函数从逗号分隔的文件中读取患者数据。readtable读取文件中的所有列。

从文件中读取所有列创建一个表,patients.dat

T2 = readtable('patients.dat');: T2 (1:5)
ans =5×10表名字性别年龄所在地身高体重吸烟者心脏收缩舒张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.

e4,100 T.ID =兰迪(1,1);T(1:5,:)
ans =5×5表性别吸烟者身高体重ID __________ ______ ______ ____ { '男'}真71 176 8148 { '男'}假69 163 9058 { '女'}假64 131 1270 { '女'}假67 133 9134 { '女'}假64 119 6324

所有分配给一个表中的变量必须具有相同的行数。

通过使用创建表摘要视图的数据类型,描述,单位和其他描述性统计每个变量总结函数。

概要(T)
变量:性别:100x1字符向量单元格数组吸烟:100x1逻辑值:True 34 False 66身高:100x1双值值:Min 60中位数67 Max 72权重:100x1双值值:Min 111中位数142.5 Max 202 ID: 100x1双值值:Min 120中位数5485.5 Max 9706

返回表的大小。

尺寸(T)
ans =1×2100年5

T.包含100行和5个变量。

创建一个新的、更小的表,包含的前5行T.和显示。可以使用括号内的数字索引来指定行和变量。此方法类似于为数字数组建立索引以创建子数组。Tnew是一个5×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乘4的桌子。

TNEW = TNEW(:,2:结束)
TNEW =5×4表吸烟者身高体重ID ______ ______ ______ ____ true 71 176 8148 false 69 163 9058 false 64 131 1270 false 67 133 9134 false 64 119 6324

通过行和变量名访问数据

添加排名T.和索引表使用行和变量名,而不是数字索引。通过分配添加行名称工作空间可变的RowNames的属性T.

T.Properties.RowNames =姓;

显示的前五行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×5表。

TNEW = T({“史密斯”“约翰逊”},:)
TNEW =2×5表性别吸烟者身高体重ID ________ ______ ______ ______ ____ Smith{'男性'}true 71 176 8148 Johnson{'男性'}false 69 163 9058

选择所命名病人的身高和体重“约翰逊”通过索引的变量名。Tnew是一个1×2的表。

Tnew = T (“约翰逊”,{'高度''重量'})
TNEW =1×2表身高体重______ ______强生69 163

您可以访问表变量与点语法,如T.Height,或通过命名索引,如T(:,“高度”)

计算和添加结果作为表变量

您可以访问表变量的内容,然后使用MATLAB®函数对它们进行计算。计算身体质量指数(BMI.)基于现有的表的变量数据,并把它添加作为新的变量。剧情的关系BMI.给病人作为一个吸烟者或不吸烟者状态。加入血压读数表,并绘制血压BMI的关系。

计算BMI.使用表变量,重量高度.您可以提取重量高度为计算方便,同时保持重量高度, 和BMI.与患者其他数据表。显示的前五行T.

T.BMI =(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

填充可变单元和可变的描述属性BMI..可以向任何表变量添加元数据,以进一步描述变量中包含的数据。

T.Properties.VariableUnits {'BMI'} ='kg /平方公尺2';T.Properties.VariableDescriptions {'BMI'} =“身体质量指数”

创建直方图,探讨是否有本组患者中吸烟和身体质量指数之间的关系。你可以索引BMI.的逻辑值吸烟者表变量,因为每一行包含BMI.吸烟者对于同一病人的价值观。

TF =(T.Smoker == FALSE);H1 =直方图(T.BMI(TF),“BinMethod”“整数”);抓住TF =(T.Smoker == TRUE);H2 =直方图(T.BMI(TF),“BinMethod”“整数”);xlabel('BMI(kg /平方公尺2)');ylabel(“患者”);传奇(“不吸烟”“吸烟者”);标题(“吸烟者和不吸烟者的BMI分布”);抓住离开

从工作空间变量中添加患者的血压读数收缩压舒张.每一行都包含收缩压舒张, 和BMI.对于同一病人的价值观。

T.Systolic =收缩压;T.Diastolic =舒张压;

创建直方图显示是否存在高值之间的关系舒张BMI.

TF =(T.BMI <= 25);H1 =直方图(T.Diastolic(TF),“BinMethod”“整数”);抓住TF =(T.BMI> 25);H2 =直方图(T.Diastolic(TF),“BinMethod”“整数”);xlabel(舒张压读数(mm Hg));ylabel(“患者”);传奇('BMI <= 25''BMI> 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贝利{‘女性’}假68 1302239 19.766 113 81

创建一个血压变量保持血压读数在一个100 × 2表变量。

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

删除收缩压舒张从表中,因为它们是多余的。

T.Systolic = [];T.Diastolic = [];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贝利{‘女性’}假68 130 2239 19.766113 81

放在ID作为第一列,按位置重新排列表变量。

T = T(:,[5 1:4 6 7]);T(1:5,:)
ans =5×7表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.766113 81

您还可以通过名字重新排序表变量。要重新排序表中的变量,使性别是最后:

  1. 找到“性别”在里面VariableNames表的属性。

  2. 移动“性别”到由变量名组成的单元格数组的末尾。

  3. 使用名称的单元阵列重新排序表变量。

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;toDelete =(nonsmokers.Smoker == TRUE);不吸烟者(toDelete,:) = [];nonsmokers.Smoker = [];

不吸烟者到一个文件中。

writetable(非吸烟者,'nonsmokersBMI.txt');

也可以看看

||||||||

相关的例子

更多关于