主要内容

表格访问数据

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

索引到表中的典型原因包括:

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

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

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

表索引语法摘要

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

  • 光滑的括号(),返回具有选定行和变量的表。

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

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

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

类型的输出

语法

变量

例子

表,包含指定的行和变量

T(vars.

指定为:

  • 之间的行数(1

  • 名字,如果T行名称

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

  • 冒号(),表示所有行

指定为:

  • 可变数字(之间1n

  • 的名字

  • 冒号(),意味着所有变量

  • 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(数字);

    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)

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

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

T {vars.

指定为:

  • 之间的行数(1

  • 名字,如果T行名称

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

  • 冒号(),表示所有行

指定为:

  • 可变数字(之间1n

  • 的名字

  • 冒号(),意味着所有变量

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

    从前五行和第一个,第四和第五个变量连接的数组T

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

    数组由所有行和所命名的变量连接而成'一种''B'T

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

S = vartype (类型);

T {,年代}

指定为:

  • 之间的行数(1

  • 名字,如果T行名称

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

  • 冒号(),表示所有行

指定为数据类型,例如'数字'“分类”, 要么“datetime”

  • S = vartype(数字);

    T {1:5, S}

    数组的前五行和数值变量T

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

T.Variables

未指定

未指定

  • T.Variables

    T {:,:}

包含指定行和变量的表

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

负载病人
名称大小字节类AGE AGE AGE AGE AGE 100x1 800双舒张100x1 800双重性别100x1 11412电池高度100x1 800 Double Lastname 100x1 11616单元格位置100x1 14208单元SelfassessedHealthStatus 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 ⋮

使用数字索引的索引

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

T1 = T (1:5,:)
t1 =5×5表年龄性别高度减肥____ __________ ______ ______ ______史密斯38 {'male'} 71 176真正的约翰逊43 {'male'} 69 163假威廉姆斯38 {女性'} 64 131假琼斯40 {'女性'} 67 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约翰逊69 163威廉姆斯64 131琼斯67 133布朗64 119

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

添加一个带有空格和短划线的变量名称T.然后索引进入T使用变量名称。

t = addvars(t,selfassessedhealthstatus,“NewVariableNames”'自我评估的健康状况');T(1:5,{'年龄'“抽烟”'自我评估的健康状况'})
ans =5×3表年龄吸烟者自我评估健康状况___ ______ ____________________________________________史密斯38真实{'优秀'} johnson 43 false {'fair'}威廉姆斯38 false {'好'} jones 40 false {'fair'} brown 49 false {'好'}

指定数据类型下标

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

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

S = vartype ('数字'
s =表vartype下标:选择匹配“数字”的表变量请参阅表中的访问数据。

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

T4 = T (1:5)
t4 =5×3表年龄高度重量___ ______ ______史密斯38 71 176 johnson 43 69 163威廉姆斯38 64 131琼斯40 67 133棕色49 64 119

使用点表示法和逻辑值提取数据

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

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

从变量中提取数据

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

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

图包含轴。具有标题患者重量的轴包含类型直方图的对象。

T.Weight是一种双精度列向量,有100行。

选择具有逻辑索引的行

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

例如,创建符合年龄低于的患者的逻辑索引40

Rows = t.age <40
行=100 x1逻辑阵列1 0 1 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真正的摩尔28 {'男性'} 68 183错误泰勒31 {'女性'} 66 132假杰克逊25 {'male'} 71 174假white 39 {'male'} 72 202真正的哈里斯36 {女性'} 65 129 false thompson 32 {'male'} 69 191 trueGarcia 27 {女性'} 69 131 True Martinez 37 {'Male'} 70 179 False Rodriguez 39 {女性'} 64 117错误的Walker 28 {'女性'} 65 123 True Hall 25 {“男性'} 70 189 189 FalseAllen 39 {女性'} 63 143 False Young 25 {'女性'} 63 114 False⋮

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

rows = (t .吸烟者==true & T.Age<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 true Turner 37 {'Male'} 70 194 true Sanders 33 {'Female'} 67 115 true Price 31 {'Male'} 72 178 true Jenkins 28 {'Male'} 69 189 true Long 39 {'Male'} 68 182 true Patterson 37 {'Female'} 65 120 true Flores 31 {'Female'} 66 141 true⋮

具有任何变量名称或表达式的点表示

使用点表示法索引时,有两种方法可以指定变量。

  • 按名称,没有引号。例如,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.Age要么T。('年龄')

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假{‘公平’}{‘女性’}威廉姆斯64 131假{‘好’}{‘女性’}琼斯67 133假{‘公平’}布朗49{‘女性’}64 119假{‘好’}

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

C = t ('自我评估的健康状况');C (1:5)
ans =5 x1细胞{'fapl'} {'fair'} {'good'} {'fair'} {'好'}

您还可以使用函数的输出作为变量名。删除t(自我评价健康状况)变量。然后用包含今天日期的变量替换它。

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

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

使用Crly括号索引从表中提取数据并导致数组,一个骗子。但除此之外,您可以使用数字,名称和数据类型下标进行指定行和变量,就像使用流畅的括号一样。要从表中提取值,请使用Crly括号。如果从多个表变量中提取值,则变量必须具有允许它们一起连接的数据类型。

指定行和变量

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

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

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

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

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

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

如果指定一个变量名称,那么Crace Brace索引结果在相同的数组中可以使用点表示法。但是,在使用CURLY BRACE索引时,必须指定行和变量。例如,这个语法T.Height.t {:,'height'}返回相同的数组。

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

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

A2 = T.variables.
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 31 66 132 0⋮

另请参阅

|||

相关话题