这个示例展示了如何在表中添加、删除和重新排列面向列的变量。属性可以添加、移动和删除表变量addvars
,movevars
,removevars
功能。作为替代方法,您还可以使用点语法或在表中建立索引来修改表变量。使用splitvars
和mergevars
函数用于分割多列变量并将多个变量合并为一个。最后,您可以重新定位表,使表的行成为输出表的变量rows2vars
函数。
您还可以使用变量编辑器修改表变量。
的示例数据数组病人
MAT-file。显示加载到工作区中的变量的名称和大小。
负载病人谁——文件病人
名称大小字节类属性年龄100x1 800双舒张期100x1 800双性别100x1 11412细胞高度100x1 800双LastName 100x1 11616细胞位置100x1 14208细胞SelfAssessedHealthStatus 100x1 11540细胞吸烟者100x1 100逻辑收缩期100x1 800双体重100x1 800双
创建两个表。创建一个表,T
,从患者问卷中收集信息,并创建另一个表格,T2
,数据来自病人。每个表有100行。
T =表(年龄、性别、吸烟);T2 =表(身高、体重、收缩压、舒张压);
显示每个表的前5行。
头(T, 5)
ans =5×3表年龄性别吸烟者___ __________ ______ 38{'男性'}true 43{'男性'}false 38{'女性'}false 40{'女性'}false 49{'女性'}false
头(T2, 5)
ans =5×4表身高体重收缩压舒张压______ ______ ________ _________ 71 176 124 93 69 163 109 77 64 131 125 83 67 133 117 75 64 119 122 80
向表中添加变量T
通过水平连接T2
.
T = [T t2];
显示的前5行T
.
头(T, 5)
ans =5×7表年龄性别吸烟者身高体重收缩压舒张压 ___ __________ ______ ______ ______ ________ _________ 38{‘男性’}真的71 176 124 93 43{‘男性’}假69 163 109 77 38{‘女性’}假64 131 125 83 40{‘女性’}假67 133 117 75 49{‘女性’}假64 119 122 80
表T
现在有7个变量和100行。
如果水平连接的表有行名,horzcat
通过匹配行名连接表。因此,表必须使用相同的行名,但行顺序无关紧要。
从工作区变量中添加患者的名字姓
在第一个表变量之前T
.可以使用新位置附近的变量名指定表中的任何位置。使用引号来引用表变量的名称。但是,不要对作为工作空间变量的输入参数使用引号。
T = addvars (T,姓,“之前”,“年龄”);头(T, 5)
ans =5×8表LastName年龄性别吸烟者身高体重收缩压舒张压 ____________ ___ __________ ______ ______ ______ ________ _________ {' 史密斯38}{‘男性’}真的71 176 124 93 43{“约翰逊”}{‘男性’}假69 163 109 77{威廉姆斯的}38{‘女性’}假64 131 125 83{“琼斯”}{‘女性’}假67 133 117 75{“棕色”}49{‘女性’}假64 119 12280
您还可以使用数字指定表中的位置。例如,使用数字指定位置的等价语法是T = addvars (T、LastName、‘前’,1)
.
添加新表变量的另一种方法是使用点语法。当您使用点语法时,您总是添加新变量作为最后一个表变量。可以添加任意数据类型的变量,只要它的行数与表相同。
为血压创建一个新变量,作为两个变量的水平连接收缩压
和舒张压
.将其添加到T
.
t .血压=[收缩压舒张压];头(T, 5)
ans =5×9表LastName年龄性别吸烟者身高体重收缩压舒张期血压 ____________ ___ __________ ______ ______ ______ ________ _________ _____________ {' 史密斯的38}{‘男性’}真的71 176 124 93 124 93 43{“约翰逊”}{‘男性’}假69 163 109 77 109 77{威廉姆斯的}38{‘女性’}假64 131 125 83 125 83 40{“琼斯”}{‘女性’}假67 133117 75 117 75 {'Brown' } 49 {'Female'} false 64 119 122 80 122 80
T
现在有9个变量和100行。一个表变量可以有多个列。因此,尽管血压
有两列,它是一个表变量。
添加一个新变量,身体质量指数
,在表中T
,包括每个病人的身体质量指数。身体质量指数
是身高和体重的函数。当你计算身体质量指数
,你可以参考重量
和高度
变量T
.
T.BMI = (T.Weight * 0.453592)。/ (T.Height * 0.0254)。^ 2;
运营商./
和.^
在计算身体质量指数
分别表示元素除法和指数法。
显示表的前五行T
.
头(T, 5)
ans =5×10表LastName年龄性别吸烟者身高体重收缩压舒张期血压体重指数 ____________ ___ __________ ______ ______ ______ ________ _________ _____________ ______ {' 史密斯的38}{‘男性’}真的24.547 71 176 124 93 124 93 43{“约翰逊”}{‘男性’}假69 163 109 77 109 77 24.071{威廉姆斯的}38{‘女性’}假64 131 125 83 125 83 22.486{'Jones'} 40 {'Female'} false 67 133 117 75 117 75 20.831 {'Brown'} 49 {'Female'} false 64 119 122 80 122 80 20.426
移动表变量身体质量指数
使用movevars
函数,以便它在变量之后重量
.当您通过名称指定表变量时,请使用引号。
T = movevars (T)“身体质量指数”,“后”,“重量”);头(T, 5)
ans =5×10表LastName年龄性别吸烟者身高体重BMI收缩压舒张期血压 ____________ ___ __________ ______ ______ ______ ______ ________ _________ _____________ {' 史密斯的38}{‘男性’}真的71 176 93 124 93 124 24.547 43{“约翰逊”}{‘男性’}假69 163 77 109 77 109 24.071{威廉姆斯的}38{‘女性’}假64 131 83 125 83 125 22.486{'Jones'} 40 {'Female'} false 67 133 20.831 117 75 117 75 {'Brown'} 49 {'Female'} false 64 119 20.426 122 80 122 80
您还可以使用数字指定表中的位置。例如,使用数字指定位置的等价语法是T = movevars (T,“身体质量指数”,”之后,6)
.按名称引用变量通常更方便。
作为一种替代方法,您可以通过索引来移动表变量。您可以使用与为矩阵建立索引相同的语法为表建立索引。
移动血压
这样它就在身体质量指数
.
T = T(:,[1:7 10 8 9]);头(T, 5)
ans =5×10表LastName BMI年龄性别吸烟者身高体重血压收缩压舒张压 ____________ ___ __________ ______ ______ ______ ______ _____________ ________ _________ {' 史密斯的38}{‘男性’}真的71 176 93 124 93 124 24.547 43{“约翰逊”}{‘男性’}假69 163 77 109 77 109 24.071{威廉姆斯的}38{‘女性’}假64 131 83 125 83 125 22.486{'Jones'} 40 {'Female'} false 67 133 20.831 117 75 117 75 {'Brown'} 49 {'Female'} false 64 119 20.426 122 80 122 80
在包含多个变量的表中,使用movevars
函数。
要删除表变量,请使用removevars
函数。删除收缩压
和舒张压
表变量。
T = removevars (T) {“收缩”,舒张压的});头(T, 5)
ans =5×8表LastName年龄性别吸烟者身高体重血压 ____________ ___ __________ ______ ______ ______ ______ _____________ {' 史密斯38}{‘男性’}真的71 176 24.547 124 93 43{“约翰逊”}{‘男性’}假69 163 24.071 109 77{威廉姆斯的}38{‘女性’}假64 131 22.486 125 83{“琼斯”}{‘女性’}假67 133 20.831 117 75{“棕色”}49 {'Female'} false 64 119 20.426 122 80
作为一种替代方法,您可以使用点语法和空矩阵删除变量,[]
.删除年龄
变量。
T.Age = [];头(T, 5)
ans =5×7表LastName性别吸烟者身高体重血压 ____________ __________ ______ ______ ______ ______ _____________ {' 史密斯}{‘男性’}真的71 176 24.547 124 93{“约翰逊”}{‘男性’}假69 163 24.071 109 77{威廉姆斯的}{‘女性’}假64 131 22.486 125 83{“琼斯”}{‘女性’}假67 133 20.831 117 75{“棕色”}{‘女性’}错误64119 20.426 122 80
你也可以使用索引和空矩阵来删除变量,[]
.删除性别
变量。
T (:,“性别”) = [];头(T, 5)
ans =5×6表LastName吸烟者高BMI体重血压 ____________ ______ ______ ______ ______ _____________ {' 史密斯}真的71 176 24.547 124 93{“约翰逊”}假69 163 24.071 109 77{威廉姆斯的}假64 131 22.486 125 83{“琼斯”}假67 133 20.831 117 75{“棕色”}假64 119 20.426 122 80
若要将多列表变量分割为每个有一列的变量,请使用splitvars
功能。把变量血压
为两个变量。
T = splitvars (T)“血压”,“NewVariableNames”,{“收缩”,舒张压的});头(T, 5)
ans =5×7表LastName吸烟者身高体重BMI收缩压舒张压 ____________ ______ ______ ______ ______ ________ _________ {' 史密斯}真的71 176 24.547 124 93{“约翰逊”}假69 163 24.071 109 77{威廉姆斯的}假64 131 22.486 125 83{“琼斯”}假67 133 20.831 117 75{“棕色”}假64 119 20.426 122 80
类似地,可以使用。将相关的表变量分组到一个变量中mergevars
函数。结合收缩压
和舒张压
返回到一个变量,并命名它英国石油公司
.
T = mergevars (T) {“收缩”,舒张压的},“NewVariableName”,“英国石油公司”);头(T, 5)
ans =5×6表LastName吸烟者身高体重BMI BP ____________ ______ ______ ______ ______ __________ {' 史密斯}真的71 176 24.547 124 93{“约翰逊”}假69 163 24.071 109 77{威廉姆斯的}假64 131 22.486 125 83{“琼斯”}假67 133 20.831 117 75{“棕色”}假64 119 20.426 122 80
属性可以重新定位表或时间表的行,使它们成为输出表中的变量rows2vars
函数。但是,如果表有多列变量,那么在调用之前必须将它们分开rows2vars
.
重新调整行T
.指定中病人的名字T
是输出表中表变量的名称。的第一个变量T3
的变量名T
.每个剩余的变量T3
的对应行中的数据T
.
T = splitvars (T)“英国石油公司”,“NewVariableNames”,{“收缩”,舒张压的});T3 = rows2vars (T)“VariableNamesSource”,“姓”);T3 (: 1:5)
ans =6×5表史密斯OriginalVariableNames约翰逊威廉琼斯 _____________________ ______ _______ ________ ______ {' 吸烟者'}1 0 0 0{“高度”}71 69 64 67{“重量”}176 163 131 133{“身体质量指数”}24.547 24.071 22.486 20.831{“收缩”}124 109 125 117{舒张的}93 77 83 75
您可以使用点语法T3
以数组形式访问患者数据。但是,如果不能连接输入表的行值,则输出表的变量是单元格数组。
T3。史密斯
ans =6×11.0000 71.0000 176.0000 24.5467 124.0000 93.0000
addvars
|inner2outer
|mergevars
|movevars
|removevars
|rows2vars
|splitvars
|表格