主要内容

在表中访问数据

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

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

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

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

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

表索引语法摘要

根据所使用的索引类型,可以访问从表中提取的子表或数组。索引:

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

  • 点表示法以数组的形式返回变量的内容。

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

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

输出类型

语法

变量

例子

表,包含指定的行和变量

T (var

指定为:

  • 行号(之间1

  • 名字,如果T有行的名字

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

  • 冒号(),意思是所有的行

指定为:

  • 之间的变量数(1n

  • 名称

  • 冒号(),表示所有变量

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

    的前5行和第1、4、5个变量的表T

  • T(:{“A”、“B”})

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

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

S = vartype (类型);

T (,s)

指定为:

  • 行号(之间1

  • 名字,如果T有行的名字

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

  • 冒号(),意思是所有的行

指定为数据类型,例如“数字”'分类',或'约会时间'

  • S = vartype(数字);

    T (1:5, S)

    表的前五行和数值变量T

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

T。var.

t (表达式

未指定

指定为:

  • 变量名(没有引号)

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

  • T.Date

    从命名的表变量中提取的数组“日期”

  • t(“2019/06/30”)

    从命名的表变量中提取的数组'2019/06/30'

  • T.(1)

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

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

T。var.

t (表达式)(

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

指定为:

  • 变量名(没有引号)

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

  • T.Date (1:5)

    从名为的表变量提取前五行数组“日期”

  • t(“2019/06/30”)(1:5)

    从名为的表变量提取前五行数组'2019/06/30'

  • t (1) (1:5)

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

数组,从指定行和变量中串联数据

{var

指定为:

  • 行号(之间1

  • 名字,如果T有行的名字

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

  • 冒号(),意思是所有的行

指定为:

  • 之间的变量数(1n

  • 名称

  • 冒号(),表示所有变量

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

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

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

    从所有行系连接的数组和名为的变量“一个”“B”T

数组,将指定行的数据和具有指定数据类型的变量连接起来

S = vartype (类型);

{,年代}

指定为:

  • 行号(之间1

  • 名字,如果T有行的名字

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

  • 冒号(),意思是所有的行

指定为数据类型,例如“数字”'分类',或'约会时间'

  • S = vartype(数字);

    T {1:5, S}

    阵列从前五行连接和数字变量T

数组,从所有行和变量连接数据

T.variables.

未指定

未指定

  • T.variables.

    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'、LastName)
T =100×5表年龄性别身高体重吸烟者  ___ __________ ______ ______ ______ 史密斯38{‘男性’}71 176真正的约翰逊43{‘男性’}69 163假威廉姆斯38{‘女性’}64 131假琼斯40{‘女性’}67 133假布朗49{‘女性’}64 119假戴维斯46{‘女性’}68 142假米勒33{‘女性’}64 142真正的威尔逊68{‘男性’}180假摩尔28{“男性”}68 183 false Taylor 31 {'Female'} 66 132 false Anderson 45 {'Female'} 68 128 false Thomas 42 {'Female'} 66 137 false Jackson 25 {'Male' } 71 174 false White 39 {'Male' } 72 202 true Harris 36 {'Female'} 65 129 false Martin 48 {'Male' } 71 181 true ⋮

使用数字索引

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

T1 = T (1:5,:)
T1 =5×5表年龄性别高度重量吸烟____ __________ _____________ ______史密斯38 {'男性'} 71 176真正的约翰逊43 {'男性'} 69 163假威廉姆斯38 {女性'} 64 131错误的琼斯40 {'女性'} 67 133 133 133 133错误棕色49 {女性'} 64 119 false

T1是5×5桌子。

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

使用名称索引

为姓的病人选择所有的数据'威廉姆斯''棕色的'.自T有患者姓氏,指数的行名称T使用行名称。

t2 = t({'威廉姆斯''棕色的'},:)
T2 =2×5表年龄性别高度减肥____ __________ ____________ ______威廉姆斯38 {女性'} 64 131假棕49 {女性'} 64 119错误

T2是一张2乘5的桌子。

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

t3 = t(1:5,{“高度”“重量”})
T3 =5×2表高度重量______ ______史密斯71 176 johnson 69 163威廉姆斯64 131琼斯67 133棕色64 119

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

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

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

指定数据类型下标

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

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

S = vartype (“数字”
S = table vartype subscript: Select table variables matching the type 'numeric'参见Access Data in a table。

创建一个表,其中只有数值变量,并且只有前五行T

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

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

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

负载病人T =表(年龄、性别、身高、体重、吸烟,...'rownames'、LastName);

从变量中提取数据

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

直方图(T.Weight)标题(“病人体重”

图中包含一个轴对象。标题为Patient Weight的坐标轴对象包含一个类型直方图对象。

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

使用逻辑索引选择行

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

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

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

为年龄小于40,索引到高度变量使用.年龄小于40

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

您可以使用逻辑索引在表中建立索引。显示T对于年轻比较年轻的患者40

T(行,:)
ANS =.56×5表年龄性别身高体重吸烟者  ___ __________ ______ ______ ______ 史密斯38{‘男性’}71 176真正的威廉姆斯38{‘女性’}64 131假米勒33{‘女性’}64 142真实摩尔183年{‘男性’}68年28日假泰勒132年66年{‘女性’}31日假杰克逊25{‘男性’}71 174假白39{‘男性’}72 202真正的哈里斯36{‘女性’}65 129假汤普森32{'Male'} 69 191 true Garcia 27 {'Female'} 69 131 true Martinez 37 {'Male'} 70 179 false Rodriguez 39 {'Female'} 64 117 false Walker 28 {'Female'} 65 123 true Hall 25 {'Male'} 70 189 false Allen 39 {'Female'} 63 143 false Young 25 {'Female'} 63 114 false⋮

一个逻辑表达式可以匹配多个条件。显示年龄小于40

rows = (t .吸烟者==true & T.Age<40);T(行,:)
ANS =.18×5表年龄性别高度减肥______________ ______ ______ ______史密斯38 {'male'} 71 176真正的米尔33 {'女性'} 64 142真正的白色39 {'男性'} 72 202真正的汤普森32 {男性'} 69 191真实Garcia 27 {'女性'} 69 131 True Walker 28 {'女性'} 65 123真正的国王30 {'Male'} 67 186 True Nelson 33 {'Male'} 66 180 True Mitchell 39 {'Male'} 71 164 True特纳{'Male'} 70 194真正的砂光机33 {'女性'} 67 115真正的价格31 {'男性'} 72 178真正的Jenkins 28 {'Male'} 69 189 True Long 39 {“男性'} 68 182 TruePatterson 37 {'女'} 65 120真正的弗洛雷斯31 {'女'} 66 141真实♥

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

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

  • 通过名字,没有引号。例如,T.Date指定命名的变量“日期”

  • 通过表达式,在点之后用括号括起来。例如,t(“开始日期”)指定命名的变量“开始日期”

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

在指定时使用第二种语法:

  • 一个数字,指示表中变量的位置。

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

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

例如,从病人MAT-file。然后使用点表示法来访问表变量的内容。

负载病人T =表(年龄、性别、身高、体重、吸烟,...'rownames'、LastName);

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

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

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

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

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

添加一个带空格的变量名称和一个连字符T

T = addvars (T, SelfAssessedHealthStatus“NewVariableNames”“自我评价健康状况”);T(1:5,:)
ANS =.5×6表年龄性别高度重量吸烟者自我评估健康状况___ __________ ___________________________________________史密斯38 {'男性'} 71 176真实的{'公平'} johnson 43 {'男性'}威廉姆斯38 {''女性'} 64 131 false {'好'}琼斯40 {女性'} 67 133 false {'fair'} brown 49 {女性'} 64 119 false {'好'}

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

c = t.(“自我评价健康状况”);C (1:5)
ans =5x1细胞{‘优秀’}{‘公平’}{‘好’}{‘公平’}{‘好’}

您还可以使用函数的输出作为变量名称。删除T。('自我评估的健康状况')多变的。然后用姓名包括今天日期的变量替换它。

t (“自我评价健康状况”) = [];t (string (datetime (“今天”) +“自我报告”)= selfassessedhealthstatus;T(1:5,:)
ANS =.5×6表年龄性别身高体重吸烟者01 - 9月- 2021年自我报告  ___ __________ ______ ______ ______ _______________________ 史密斯38{‘男性’}71 176真正的{‘优秀’}约翰逊43{‘男性’}69 163假{‘公平’}{‘女性’}威廉姆斯64 131假{‘好’}{‘女性’}琼斯67 133假{‘公平’}布朗49{‘女性’}64 119假{‘好’}

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

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

指定行和变量

控件中的数字和逻辑数组创建表病人文件。

负载病人T =表(年龄、身高、体重、吸烟,...'rownames'、LastName);

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

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

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

一个是5×2数字数组,而不是表。

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

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

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

A2 = T.Variables
A2 =100×438 71 176 11 43 69 163 0 38 64 119 0 46 68 142 0 33 64 142 1 40 68 180 0 28 68 143 0 31 66 132 0萱

另请参阅

|||

相关的话题