主要内容

访问表中的数据

表是在变量中存储面向列的数据的容器。只要所有变量的行数相同,表变量可以有不同的数据类型和大小。表变量有名称,就像结构的字段有名称一样。表的行可以有名称,但不需要行名称。要访问表数据,请使用行和变量的名称或数字索引将x转换为行和变量。

在表中建立索引的典型原因包括:

  • 重新排序或删除行和变量。

  • 将数组作为新行或变量添加。

  • 提取数据数组以用作函数的输入参数。

表索引语法概述

根据使用的索引类型,您可以访问从表中提取的子表或数组。使用以下方法进行索引:

  • 光滑圆括号,(),返回已选择行和变量的表。

  • 点符号以数组形式返回变量的内容。

  • 花括号{},返回由选定行和变量的内容连接而成的数组。

您可以按名称、数字索引或数据类型指定行和变量。从R2019b开始,变量名称和行名称可以包括任何字符,包括空格和非ASCII字符。此外,它们可以以任何字符开头,而不仅仅是字母。变量名称和行名称不必是有效的®标识符(由isvarname功能)。

输出类型

语法

变量

例子

表,包含指定的行和变量

T (,var)

指定为:

  • 行号(介于1.M)

  • 姓名,如果有的话T有行名

  • 时代,如果T这是一个时间表

  • 结肠(:),表示所有行

指定为:

  • 之间的变量数(1.N)

  • 名字

  • 结肠(:),表示所有变量

  • T (1:5, [1 4 5])

    表的前五行和第一、第四和第五个变量T

  • T(:,{A',B})

    包含所有行和命名的变量的表“一个”“B”从…起T

表,包含具有指定数据类型的变量

S=vartype(类型);

T (,S)

指定为:

  • 行号(介于1.M)

  • 姓名,如果有的话T有行名

  • 时代,如果T这是一个时间表

  • 结肠(:),表示所有行

指定为数据类型,例如“数字”,“绝对的”,或“日期时间”

  • S=变量类型(“数值”);

    T(1:5,S)

    表的前五行和数值变量T

数组,从一个变量中提取数据

T。变量

T(表达式)

未指定

指定为:

  • 变量名(没有引号)

  • 括号内返回变量名或数字的表达式

  • T.日期

    从名为“日期”

  • t(“2019/06/30”)

    从名为'2019/06/30'

  • T.(1)

    从第一个表变量中提取的数组

数组,从一个变量和指定行提取数据

T。变量()

T(表达式)()

指定为数组的数字或逻辑索引

指定为:

  • 变量名(没有引号)

  • 括号内返回变量名或数字的表达式

  • T.日期(1:5)

    从名为“日期”

  • T.('2019/06/30')(1:5)

    从名为'2019/06/30'

  • T.(1)(1:5)

    从第一个表变量提取的数组的前五行

数组,连接指定行和变量中的数据

T{,var}

指定为:

  • 行号(介于1.M)

  • 姓名,如果有的话T有行名

  • 时代,如果T这是一个时间表

  • 结肠(:),表示所有行

指定为:

  • 之间的变量数(1.N)

  • 名字

  • 结肠(:),表示所有变量

  • T {1:5, [1 4 5]}

    的前5行和第1、4、5个变量连接的数组T

  • T{:,{'A','B'}

    从所有行和名为“一个”“B”从…起T

数组,用指定的数据类型连接指定行和变量中的数据

S=vartype(类型);

T{,S}

指定为:

  • 行号(介于1.M)

  • 姓名,如果有的话T有行名

  • 时代,如果T这是一个时间表

  • 结肠(:),表示所有行

指定为数据类型,例如“数字”,“绝对的”,或“日期时间”

  • S=变量类型(“数值”);

    T{1:5,S}

    从前五行和T

数组,连接来自所有行和变量的数据

T.变量

未指定

未指定

  • T.变量

    与返回的数组相同T{:,:}

包含指定行和变量的表

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

负载患者
名称大小字节类属性年龄100x1 800双舒张期100x1 800双性别100x1 11412细胞高度100x1 800双LastName 100x1 11616细胞位置100x1 14208细胞SelfAssessedHealthStatus 100x1 11540细胞吸烟者100x1 100逻辑收缩期100x1 800双体重100x1 800双

创建一个表,并用年龄,性别,高度,重量,吸烟者工作区变量。使用中的唯一标识符姓氏作为行名称。T是一个100乘5的表。(指定行名称时,它们不算作表变量)。

T =表(年龄、性别、身高、体重、吸烟,...“RowNames”,姓氏)
T =100×5台年龄性别身高体重吸烟者史密斯38{男}7176真约翰逊43{男}69163假威廉姆斯38{女}64131假琼斯40{女}67133假布朗{女}119假戴维斯46{女}142}假米勒·威尔逊28{男}男{68183假泰勒31{女}66132假安德森45{女}68128假托马斯42{女}66137假杰克逊25{男}71174假白39{男}72202真哈里斯36{女}65129假马丁48{男}71181真⋮

使用数字索引的索引

创建一个子表,包含前5行和来自的所有变量T。若要指定所需的行和变量,请使用括号内的数字索引。这种类型的索引类似于对数字数组进行索引。

T1=T(1:5,:)
T1 =5×5表年龄性别身高体重吸烟者___ __________ ______ ______ ______史密斯38{'男性'}71 176真约翰逊43{'男性'}69 163假威廉姆斯40{'女性'}64 131假琼斯40{'女性'}67 133假布朗49{'女性'}64 119假

T1这是一张五乘五的桌子。

除了数字索引外,还可以在括号中使用行名或变量名。(在本例中,使用行索引和冒号比使用行或变量名更紧凑。)

使用名称编制索引

选择姓氏患者的所有数据“威廉姆斯”“棕色”. 自从T行名是病人的姓,索引到T使用行名称。

T2=T({“威廉姆斯”,“棕色”},:)
T2 =2×5表年龄性别身高体重吸烟者威廉姆斯38{女性}64 131假棕色49{女性}64 119假

T2是一张2乘5的桌子。

您还可以根据名称选择变量。创建一个只有的前五行的表T高度重量变量。显示它。

T3=T(1:5{“高度”,“重量”})
T3 =5×2表身高体重史密斯71176约翰逊69163威廉姆斯64131琼斯67133布朗64119

表变量名不必是有效的MATLAB标识符。它们可以包括空格和非ASCII字符,并且可以以任何字符开头。

添加一个带有空格和破折号的变量名T.然后指数为T使用变量名。

T = addvars (T, SelfAssessedHealthStatus“纽瓦里亚伯纳姆斯”,“自我评价健康状况”);T (1:5, {“年龄”,“吸烟者”,“自我评价健康状况”})
ans=5×3表年龄吸烟者自我评估健康状况_________ ___________________________史密斯38真{'Excellent'}约翰逊43假{'Fair'}威廉姆斯38假{'Good'}琼斯40假{'Fair'}布朗49假{'Good'}

指定数据类型下标

您可以创建与具有相同数据类型的所有变量相匹配的数据类型下标,而不是使用名称或数字指定变量。

首先,创建一个数据类型下标以匹配数字表变量。

S=vartype(“数字”)
S=表变量类型下标:选择与类型“numeric”匹配的表变量,请参见表中的访问数据。

创建一个表,该表仅包含数值变量,并且仅包含表中的前五行T

T4=T(1:5,S)
T4 =5×3表年龄身高体重___ ______ ______史密斯38 71 176约翰逊43 69 163威廉姆斯38 64 131琼斯40 67 133布朗49 64 119

使用点符号和逻辑值提取数据

从中创建一个表患者MAT-file。然后使用点符号从表变量中提取数据。您还可以使用由满足条件的表变量中的值生成的逻辑索引进行索引。

负载患者T =表(年龄、性别、身高、体重、吸烟,...“RowNames”,姓氏);

从变量中提取数据

要从一个变量中提取数据,请使用点表示法。从变量中提取数值重量.然后绘制这些值的直方图。

直方图(T.Weight)标题(“患者体重”)

图中包含一个坐标轴。标题为“患者权重”的坐标轴包含一个类型直方图对象。

T.重量是具有100行的双精度列向量。

选择具有逻辑索引的行

您可以使用逻辑索引数组索引到数组或表中。通常,您使用一个逻辑表达式来确定表变量中的哪些值符合条件。该表达式的结果是一个逻辑索引数组。

例如,创建匹配年龄小于40

rows = T.Age < 40
排=100x1逻辑阵列1 0 1 0 0 0 1 0 1 1 ⋮

为年龄小于40,索引到高度变量使用. 有56名患者年龄小于50岁40

T.高度(行)
ans=56×171 64 64 68 66 71 72 65 69 69⋮

您可以使用逻辑索引索引到表中。显示T对于年龄小于40

T(行,:)
ans=56×5表年龄性别身高体重吸烟者史密斯3176真威廉姆斯3131假米勒3142真摩尔28183假泰勒3166假杰克逊25男71202假哈里斯女汤普森32男69 191真加西亚27女69 131真马丁内斯37男70 179假罗德里格斯39女117假步行者28女65 123真大厅25男70 189假艾伦39女63 143假青年25女63 114假⋮

您可以用一个逻辑表达式匹配多个条件。显示年龄小于的吸烟患者的行40

rows=(T.Smoker==true&T.Age<40);T(rows,:)
ans=18×5表年龄性别身高体重吸烟者史密斯71 176真米勒64 142真白人39 72 202真汤普森32{男}69 191真加西亚27{女}131真沃克28{女}65 65{真尼尔森国王186{男}71 164真特纳37{男}70 194真桑德斯33{女}67 115真价格31{男}72 178真詹金斯28{男}69 189真长39{男}68 182真帕特森37{女}65 120真弗洛雷斯31{女}66 141真⋮

点符号与任何变量名或表达式

使用点表示法创建索引时,有两种方法来指定变量。

  • 通过名字,没有引号。例如,T.日期指定一个名为“日期”

  • 通过表达式,其中表达式在点后用括号括起。例如,T.(“开始日期”)指定一个名为“开始日期”

当表变量名碰巧也是一个有效的MATLAB®标识符时,使用第一个语法。(有效的标识符以字母开头,只能包含字母、数字和下划线。)

指定以下内容时,请使用第二种语法:

  • 指示变量在表中位置的数字。

  • 不是有效的MATLAB标识符的变量名。

  • 一种函数,其输出是表中变量的名称,或是添加到表中的变量。该函数的输出必须是字符向量或字符串标量。

例如,从患者MAT文件。然后使用点符号访问表变量的内容。

负载患者T =表(年龄、性别、身高、体重、吸烟,...“RowNames”,姓氏);

要按表中的位置指定变量,请使用数字。年龄是中的第一个变量T,所以使用数字1.指定其位置。

T.(1)
ans=100×138 43 38 40 49 46 33 40 28 31 ⋮

若要按名称指定变量,可以将其括在引号中。因为“年龄”是有效标识符,您可以使用T.年龄T.(“年龄”)

T(“年龄”)
ans=100×138 43 38 40 49 46 33 40 28 31 ⋮

您可以指定不是有效MATLAB标识符的表变量名。变量名可以包括空格和非ASCII字符,并且可以以任何字符开头。但是,当您使用点表示法访问具有此类名称的表变量时,必须使用括号来指定。

将带有空格和连字符的变量名添加到T

T = addvars (T, SelfAssessedHealthStatus“纽瓦里亚伯纳姆斯”,“自我评价健康状况”);T(1:5,:)
ans=5×6表(UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU琼斯40{'Female'}67 133假{'Fair'}布朗49{'Female'}64 119假{'Good'}

使用点符号访问新表变量。显示前五个元素。

C=T(“自我评价健康状况”);C(1:5)
ans=5x1电池{‘优秀’}{‘公平’}{‘好’}{‘公平’}{‘好’}

您还可以将函数的输出用作变量名T.(“自我评估健康状况”)变量。然后将其替换为名称包含今天日期的变量。

T(“自我评价健康状况”)=[];T.(字符串(日期时间)(“今天”)) +“自我报告”)=自我评估的健康状况;T(1:5,:)
ans=5×6表(UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU{'Female'}67 133假{'Fair'}布朗49{'Female'}64 119假{'Good'}

从指定的行和变量提取数据

使用大括号编制索引可从表中提取数据并生成数组,子表。但除了这个区别之外,您还可以使用数字、名称和数据类型下标指定行和变量,就像使用圆括号进行索引时一样。要从表中提取值,请使用花括号。如果您从多个表变量中提取值,那么这些变量必须具有允许将它们连接在一起的数据类型。

指定行和变量

从中的数字和逻辑数组创建表患者文件

负载患者T=表(年龄、身高、体重、吸烟者、,...“RowNames”,姓氏);

从多个变量中提取数据T。与点表示法不同,使用大括号索引可以从多个表变量中提取值,并将它们连接到一个数组中。

提取前五名患者的身高和体重。使用数字索引选择前五行,使用变量名称选择变量高度重量

T = {1:5, {“高度”,“重量”}}
A=5×271 176 69 163 64 131 67 133 64 119

A.是一个5乘2的数字数组,而不是表。

如果指定一个变量名,则大括号索引将产生与点表示法相同的数组。但是,在使用大括号索引时,必须同时指定行和变量。例如,这个语法T.高度T{:,“高度”}返回相同的数组。

从所有行和变量中提取数据

如果所有表变量都具有允许将它们连接在一起的数据类型,则可以使用T.变量将所有表数据放入数组的语法。该语法等价于T{:,:}其中冒号表示所有行和所有变量。

A2=T.变量
A2=100×438 71 176 1 43 69 163 0 38 64 131 0 40 67 133 0 49 64 119 0 46 68 142 0 33 64 142 1 40 68 180 0 28 68 183 0 31 66 132 0 ⋮

另见

|||

相关的话题