主要内容

表格访问数据

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

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

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

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

  • 将数据阵列提取用作函数的输入参数。

表索引语法摘要

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

  • 平滑括号,(),返回包含选定行和变量的表。

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

  • 花括号,{},返回从所选行和变量的内容连接的数组。

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

类型的输出

句法

变量

例子

表,包含指定的行和变量

T(瓦尔斯

指定为:

  • 之间的行数(1m

  • 姓名,如果T.行名称

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

  • 冒号 (),表示所有行

指定为:

  • 可变数字(介于1N.

  • 的名字

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

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

    具有前五行的表和第一个,第四和第五变量T.

  • 标签'})

    包含所有行和名为“A”“B”T.

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

s = vartype(类型);

T(,年代)

指定为:

  • 之间的行数(1m

  • 姓名,如果T.行名称

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

  • 冒号 (),表示所有行

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

  • s = vartype('numeric');

    T(1:5,s)

    表的前五行和数字变量T.

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

Tvar

T.(表示

未标明

指定为:

  • 变量名(不带引号)

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

  • T.Date.

    数组从名为的表变量提取'日期'

  • T.('2019/06/30')

    数组从名为的表变量提取“2019/06/30”

  • t (1)

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

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

Tvar

T.(表示)(

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

指定为:

  • 变量名(不带引号)

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

  • T.Date (1:5)

    从命名的表变量中提取的数组的前五行'日期'

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

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

  • T.(1)(1:5)

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

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

T {瓦尔斯}

指定为:

  • 之间的行数(1m

  • 姓名,如果T.行名称

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

  • 冒号 (),表示所有行

指定为:

  • 可变数字(介于1N.

  • 的名字

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

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

    数组的前五行和第一、第四和第五个变量连接而成T.

  • 标签'}}

    数组由所有行和所命名的变量连接而成“A”“B”T.

数组,使用指定的数据类型串联来自指定行和变量的数据

s = vartype(类型);

T {,年代}

指定为:

  • 之间的行数(1m

  • 姓名,如果T.行名称

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

  • 冒号 (),表示所有行

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

  • s = vartype('numeric');

    t {1:5,s}

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

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

T.Variables

未标明

未标明

  • T.Variables

    与阵列相同T {:,:}

包含指定行和变量的表

从中加载100名患者的样品数据病人mat文件到工作区变量。

加载病人谁是
姓名大小字节类属性年龄100x1800双倍舒张压100x1800双倍性别100x111412细胞高度100x1800双倍姓氏100x111616细胞位置100x114208细胞自评健康状态100x111540细胞吸烟者100x1100逻辑收缩压100x1800双倍体重100x1800双倍

创建一个表并用年龄性别身高重量吸烟者工作空间变量。中使用唯一标识符作为行的名字。T.是一个100×5表。(当您指定行名称时,它们不计为表变量)。

T=表(年龄、性别、身高、体重、吸烟者、,...“RowNames”,姓)
T=100×5表年龄性别身高体重吸烟者史密斯38{男}7176真约翰逊43{男}69163假威廉姆斯38{女}64131假琼斯40{女}67133假棕色{女}64119假Davis 46 {'Female'} 68 142 false Miller 33 {'Female'} 64 142 true Wilson 40 {'Male' } 68 180 false Moore 28 {'Male' } 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{男}7176真约翰逊43{男}69163假威廉姆斯38{女}64131假琼斯40{女}67133假棕色{女}64119假

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=添加变量(T,自评估健康状态,'newvariablenames'“自我评估健康状况”); T(1:5{“年龄”“抽烟”“自我评估健康状况”})
ans =5×3表年龄吸烟者自我评估健康状况{uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuiuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

指定数据类型下标

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

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

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

创建一个只有数字变量的表,并且只有前五行,来自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文件。然后使用点表示法从表变量中提取数据。您还可以使用从满足条件的表变量中的值生成的逻辑索引进行索引。

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

从变量中提取数据

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

直方图(T.权重)标题('患者体重'

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

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

选择具有逻辑索引的行

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

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

行=T.年龄<40
行=100x1逻辑阵列1 0 1 0 0 1 1 1⋮

为年龄小于30岁的患者提取身高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.smoker == 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”,姓);

要按表中的位置指定变量,请使用数字。年龄是第一个变量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=添加变量(T,自评估健康状态,'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细胞{'Excellent'}{'Fair'}{'Good'}{'Fair'}{'Good'}

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

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

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

用花括号索引从表中提取数据并在数组中得到结果,子表。但除此之外,您可以使用数字、名称和数据类型下标指定行和变量,就像使用平滑圆括号进行索引一样。若要从表中提取值,请使用大括号。如果您从多个表变量中提取值,则变量的数据类型必须允许使用这些值连接在一起。

指定行和变量

从数字和逻辑阵列创建一个表病人文件。

加载病人T =表(年龄,身高,体重,吸烟者,...“RowNames”,姓);

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

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

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

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

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

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

如果所有表变量都有允许它们一起连接的数据类型,那么您可以使用T.Variables将所有表数据放入数组的语法T {:,:}冒号指示所有行和所有变量的地方。

A2 = T.Variables
A2 =100×4.38 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⋮

也可以看看

|||

相关话题