主要内容

访问表中的数据

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

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

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

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

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

表索引语法摘要

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

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

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

  • 大括号{},返回由选定行和变量的内容连接起来的数组。

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

输出类型

语法

变量

例子

表,包含指定的行和变量

T (var

指定为:

  • 行号(介于1而且

  • 名字,如果T具有行名

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

  • 冒号(),表示所有行

指定为:

  • 变量数(介于1而且n

  • 的名字

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

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

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

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

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

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

S = vartype(类型);

T (,年代)

指定为:

  • 行号(介于1而且

  • 名字,如果T具有行名

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

  • 冒号(),表示所有行

指定为数据类型,例如“数字”“分类”,或“datetime”

  • S = vartype('numeric');

    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)

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

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

    从表变量named中提取的数组的前五行“2019/06/30”

  • t (1) (1:5)

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

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

T {var

指定为:

  • 行号(介于1而且

  • 名字,如果T具有行名

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

  • 冒号(),表示所有行

指定为:

  • 变量数(介于1而且n

  • 的名字

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

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

    的前五行和第一个、第四个和第五个变量连接起来的数组T

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

    由所有行和已命名变量连接的数组“一个”而且“B”T

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

S = vartype(类型);

T {,年代}

指定为:

  • 行号(介于1而且

  • 名字,如果T具有行名

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

  • 冒号(),表示所有行

指定为数据类型,例如“数字”“分类”,或“datetime”

  • S = vartype('numeric');

    T {1:5, S}

    的数值变量连接的前五行的数组T

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

T.Variables

未指定

未指定

  • T.Variables

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

包含指定行和变量的表

加载100例患者的样本数据病人mat文件到工作区变量。

负载病人
名称大小字节分类属性年龄100x1 800双舒张期100x1 800双性别100x1 11412 cell身高100x1 800双姓氏100x1 11616 cell位置100x1 14208 cell自我评估健康状态100x1 11540 cell吸烟者100x1 100逻辑收缩期100x1 800双体重100x1 800双

属性创建一个表并填充它年龄性别高度重量,吸烟者工作空间变量。中的唯一标识符作为行名。T是一个100乘5的表格。(当指定行名时,它们不作为表变量计算)。

T = table(年龄,性别,身高,体重,吸烟,...“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假泰勒132年{‘女性’}66年31日假安德森45{‘女性’}68 128假托马斯137年42{‘女性’}66假杰克逊25{‘男性’}71 174假怀特39{'男'}72 202真哈里斯36{'女'}65 129假马丁48{'男'}71 181真`

使用数字索引

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

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

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约翰逊69 163威廉姆斯64 131琼斯67 133布朗64 119

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

添加带有空格和破折号的变量名T.然后索引到T使用变量名。

T = addvars(T,SelfAssessedHealthStatus,“NewVariableNames”“自我评估的健康状况”);T (1:5, {“年龄”“抽烟”“自我评估的健康状况”})
ans =5×3表年龄吸烟者自我评估健康状况_________ ___________________________史密斯38真{“优秀”}约翰逊43假{“一般”}威廉姆斯38假{“良好”}琼斯40假{“一般”}布朗49假{“良好”}

指定数据类型下标

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

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

S = vartype(“数字”
S = table vartype下标:选择匹配“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 = table(年龄,性别,身高,体重,吸烟,...“RowNames”、LastName);

从变量中提取数据

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

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

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

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

选择具有逻辑索引的行

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

例如,创建匹配年龄小于的患者的逻辑索引40

年龄< 40岁
行=100x1逻辑阵列1 0 1 0 0 0 1 1 1

为年龄小于40,索引到高度变量使用.有56名患者年龄小于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{‘男性’}69 191 69年真正的加西亚27日{‘女性’}131真正的马丁内斯37{‘男性’}70 179假罗德里格斯39{‘女性’}64 117假沃克28{‘女性’}65 123true Hall 25{'男'}70 189假Allen 39{'女'}63 143假Young 25{'女'}63 114假`

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

rows = (t .吸烟者==true & t .年龄<40);T(行,:)
ans =18×5表年龄性别身高体重吸烟者  ___ __________ ______ ______ ______ 史密斯38{‘男性’}71 176真正的米勒33{‘女性’}64 142真正的白色39{‘男性’}72 202真正的汤普森32{‘男性’}69 191 69年真正的加西亚27日{‘女性’}131真正的沃克28{‘女性’}65 123 67{‘男性’}186年真正国王真正的纳尔逊33{‘男性’}66 180真正的米切尔39{‘男性’}71 164真正的特纳37{‘男性’}70 194真正的桑德斯33{‘女性’}67 115实际价格31{‘男性’}72 178真正的69年詹金斯28日{‘男性’}189真的长39{'男'}68 182真帕特森37{'女'}65 120真弗洛雷斯31{'女'}66 141真`

任意变量名或表达式的点符号

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

  • 名字,不带引号。例如,T.Date指定一个名为“日期”

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

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

使用第二种语法指定:

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

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

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

方法创建一个表病人MAT-file。然后使用点表示法访问表变量的内容。

负载病人T = table(年龄,性别,身高,体重,吸烟,...“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真{'优秀'}约翰逊43{'男'}69 163假{'一般'}威廉姆斯38{'女'}64 131假{'良好'}琼斯40{'女'}67 133假{'一般'}布朗49{'女'}64 119假{'良好'}

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

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

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

t (“自我评估的健康状况”) = [];t (string (datetime (“今天”) +“自我报告”) = SelfAssessedHealthStatus;: T (1:5)
ans =5×6表年龄性别身高体重吸烟者2021年2月23日自我报告___________________ ____________ _______________________史密斯38{'男'}71 176真{'优秀'}约翰逊43{'男'}69 163假{'好'}威廉姆斯38{'女'}64 131假{'好'}琼斯40{'女'}67 133假{'好'}布朗49{'女'}64 119假{'好'}

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

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

指定行和变量

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

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

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

提取前五个病人的身高和体重。使用数值索引选择前五行,使用变量名选择变量高度而且重量

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

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

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

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

如果所有表变量都具有允许它们连接在一起的数据类型,则可以使用T.Variables将所有表数据放入数组的语法。这个语法等价于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 0

另请参阅

|||

相关的话题