添加、删除和重新排列表变量

您所在的位置:网站首页 表格新加一行 添加、删除和重新排列表变量

添加、删除和重新排列表变量

2024-01-15 03:00| 来源: 网络整理| 查看: 265

加载样本数据并创建表

从 patients MAT 文件加载样本数据数组。显示加载到工作区中的变量的名称和大小。

load patients whos -file patients Name Size Bytes Class Attributes Age 100x1 800 double Diastolic 100x1 800 double Gender 100x1 11412 cell Height 100x1 800 double LastName 100x1 11616 cell Location 100x1 14208 cell SelfAssessedHealthStatus 100x1 11540 cell Smoker 100x1 100 logical Systolic 100x1 800 double Weight 100x1 800 double

创建两个表。用通过患者问卷收集来的信息创建一个表 T,再用测量患者得来的数据创建另一个表 T2。每个表有 100 行。

T = table(Age,SelfAssessedHealthStatus,Smoker); T.SelfAssessedHealthStatus = string(T.SelfAssessedHealthStatus); T2 = table(Height,Weight,Systolic,Diastolic);

显示每个表的前五行。

head(T,5) Age SelfAssessedHealthStatus Smoker ___ ________________________ ______ 38 "Excellent" true 43 "Fair" false 38 "Good" false 40 "Fair" false 49 "Good" false head(T2,5) Height Weight Systolic Diastolic ______ ______ ________ _________ 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];

显示 T 的前五行。

head(T,5) Age SelfAssessedHealthStatus Smoker Height Weight Systolic Diastolic ___ ________________________ ______ ______ ______ ________ _________ 38 "Excellent" true 71 176 124 93 43 "Fair" false 69 163 109 77 38 "Good" false 64 131 125 83 40 "Fair" false 67 133 117 75 49 "Good" false 64 119 122 80

表 T 现在包含 7 个变量和 100 行。

如果您要以水平方式串联的表具有行名称,则 horzcat 将通过匹配行名称来串联表。因此,这些表必须使用相同的行名称,但列顺序无关紧要。

将变量从工作区添加到表中

将来自工作区变量 LastName 的患者姓名添加到 T 中的第一个表变量之前。您可以使用新位置附近的变量的名称在表中指定任何位置。使用引号来引用表变量的名称。但是,如果输入参数是工作区变量,则不要对其使用引号。

T = addvars(T,LastName,'Before',"Age"); T.LastName = string(T.LastName); head(T,5) LastName Age SelfAssessedHealthStatus Smoker Height Weight Systolic Diastolic __________ ___ ________________________ ______ ______ ______ ________ _________ "Smith" 38 "Excellent" true 71 176 124 93 "Johnson" 43 "Fair" false 69 163 109 77 "Williams" 38 "Good" false 64 131 125 83 "Jones" 40 "Fair" false 67 133 117 75 "Brown" 49 "Good" false 64 119 122 80

您还可以使用数字指定表中的位置。例如,使用数字指定位置时,上述命令的等效语法为 T = addvars(T,LastName,'Before',1)。

使用圆点语法添加变量

添加新的表变量的另一种方法是使用圆点语法。当您使用圆点语法时,新变量始终添加为最后一个表变量。无论变量是什么数据类型,只要行数与表相同,就可以添加到表。

通过水平串联两个变量 Systolic 和 Diastolic 来创建一个针对血压的新变量。将它添加到 T。

T.BloodPressure = [Systolic Diastolic]; head(T,5) LastName Age SelfAssessedHealthStatus Smoker Height Weight Systolic Diastolic BloodPressure __________ ___ ________________________ ______ ______ ______ ________ _________ _____________ "Smith" 38 "Excellent" true 71 176 124 93 124 93 "Johnson" 43 "Fair" false 69 163 109 77 109 77 "Williams" 38 "Good" false 64 131 125 83 125 83 "Jones" 40 "Fair" false 67 133 117 75 117 75 "Brown" 49 "Good" false 64 119 122 80 122 80

T 现在包含 9 个变量和 100 行。一个表变量可以有多个列。因此,虽然 BloodPressure 有两列,但它是一个表变量。

将一个新变量 BMI 添加到表 T 中,该表包含每位患者的体重指数。BMI 是一个关于身高和体重的函数。当您计算 BMI 时,您可以引用 T 中的 Weight 和 Height 变量。

T.BMI = (T.Weight*0.453592)./(T.Height*0.0254).^2;

计算 BMI 时使用的运算符 ./ 和 .^ 分别表示逐元素除法和乘方。

显示表 T 的前五行。

head(T,5) LastName Age SelfAssessedHealthStatus Smoker Height Weight Systolic Diastolic BloodPressure BMI __________ ___ ________________________ ______ ______ ______ ________ _________ _____________ ______ "Smith" 38 "Excellent" true 71 176 124 93 124 93 24.547 "Johnson" 43 "Fair" false 69 163 109 77 109 77 24.071 "Williams" 38 "Good" false 64 131 125 83 125 83 22.486 "Jones" 40 "Fair" false 67 133 117 75 117 75 20.831 "Brown" 49 "Good" false 64 119 122 80 122 80 20.426 在表中移动变量

使用 movevars 函数移动表变量 BMI,使其位于变量 Weight 之后。当按名称指定表变量时,请使用引号。

T = movevars(T,"BMI",'After',"Weight"); head(T,5) LastName Age SelfAssessedHealthStatus Smoker Height Weight BMI Systolic Diastolic BloodPressure __________ ___ ________________________ ______ ______ ______ ______ ________ _________ _____________ "Smith" 38 "Excellent" true 71 176 24.547 124 93 124 93 "Johnson" 43 "Fair" false 69 163 24.071 109 77 109 77 "Williams" 38 "Good" false 64 131 22.486 125 83 125 83 "Jones" 40 "Fair" false 67 133 20.831 117 75 117 75 "Brown" 49 "Good" false 64 119 20.426 122 80 122 80

您还可以使用数字指定表中的位置。例如,使用数字指定位置时,上述命令的等效语法为 T = movevars(T,"BMI",'After',6)。按名称引用变量通常更方便。

使用索引移动表变量

除上述方法外,您还可以通过索引来移动表变量。您可以对表进行索引,使用的语法与对矩阵进行索引相同。

将 BloodPressure 移动到 BMI 之后。

T = T(:,[1:7 10 8 9]); head(T,5) LastName Age SelfAssessedHealthStatus Smoker Height Weight BMI BloodPressure Systolic Diastolic __________ ___ ________________________ ______ ______ ______ ______ _____________ ________ _________ "Smith" 38 "Excellent" true 71 176 24.547 124 93 124 93 "Johnson" 43 "Fair" false 69 163 24.071 109 77 109 77 "Williams" 38 "Good" false 64 131 22.486 125 83 125 83 "Jones" 40 "Fair" false 67 133 20.831 117 75 117 75 "Brown" 49 "Good" false 64 119 20.426 122 80 122 80

在包含多个变量的表中,使用 movevars 函数通常更方便。

删除变量

要删除表变量,请使用 removevars 函数。删除 Systolic 和 Diastolic 表变量。

T = removevars(T,["Systolic","Diastolic"]); head(T,5) LastName Age SelfAssessedHealthStatus Smoker Height Weight BMI BloodPressure __________ ___ ________________________ ______ ______ ______ ______ _____________ "Smith" 38 "Excellent" true 71 176 24.547 124 93 "Johnson" 43 "Fair" false 69 163 24.071 109 77 "Williams" 38 "Good" false 64 131 22.486 125 83 "Jones" 40 "Fair" false 67 133 20.831 117 75 "Brown" 49 "Good" false 64 119 20.426 122 80 使用圆点语法删除变量

您也可以使用圆点语法和空矩阵 [] 删除变量。从表中删除 Age 变量。

T.Age = []; head(T,5) LastName SelfAssessedHealthStatus Smoker Height Weight BMI BloodPressure __________ ________________________ ______ ______ ______ ______ _____________ "Smith" "Excellent" true 71 176 24.547 124 93 "Johnson" "Fair" false 69 163 24.071 109 77 "Williams" "Good" false 64 131 22.486 125 83 "Jones" "Fair" false 67 133 20.831 117 75 "Brown" "Good" false 64 119 20.426 122 80 使用索引删除变量

您还可以使用索引和空矩阵 [] 删除变量。从表中删除 SelfAssessedHealthStatus 变量。

T(:,"SelfAssessedHealthStatus") = []; head(T,5) LastName Smoker Height Weight BMI BloodPressure __________ ______ ______ ______ ______ _____________ "Smith" true 71 176 24.547 124 93 "Johnson" false 69 163 24.071 109 77 "Williams" false 64 131 22.486 125 83 "Jones" false 67 133 20.831 117 75 "Brown" false 64 119 20.426 122 80 拆分和合并表变量

要将多列表变量拆分为多个单列变量,请使用 splitvars 函数。将变量 BloodPressure 拆分为两个变量。

T = splitvars(T,"BloodPressure",'NewVariableNames',["Systolic","Diastolic"]); head(T,5) LastName Smoker Height Weight BMI Systolic Diastolic __________ ______ ______ ______ ______ ________ _________ "Smith" true 71 176 24.547 124 93 "Johnson" false 69 163 24.071 109 77 "Williams" false 64 131 22.486 125 83 "Jones" false 67 133 20.831 117 75 "Brown" false 64 119 20.426 122 80

同样,您可以使用 mergevars 函数将多个相关的表变量组合在一个变量中。将 Systolic 和 Diastolic 重新组合为一个变量,并将其命名为 BP。

T = mergevars(T,["Systolic","Diastolic"],'NewVariableName',"BP"); head(T,5) LastName Smoker Height Weight BMI BP __________ ______ ______ ______ ______ __________ "Smith" true 71 176 24.547 124 93 "Johnson" false 69 163 24.071 109 77 "Williams" false 64 131 22.486 125 83 "Jones" false 67 133 20.831 117 75 "Brown" false 64 119 20.426 122 80 调整行的方向使其变为变量

您可以使用 rows2vars 函数调整表或时间表中行的方向,使它们成为输出表中的变量。但是,如果该表具有多列变量,则必须先拆分它们,才能调用 rows2vars。

对 T 的行调整方向。指定 T 中患者的姓名是输出表中表变量的名称。T3 的第一个变量包含 T 的变量的名称。T3 的其余每个变量都包含来自 T 对应行的数据。

T = splitvars(T,"BP",'NewVariableNames',["Systolic","Diastolic"]); T3 = rows2vars(T,'VariableNamesSource',"LastName"); T3(:,1:5)ans=6×5 table OriginalVariableNames Smith Johnson Williams Jones _____________________ ______ _______ ________ ______ {'Smoker' } 1 0 0 0 {'Height' } 71 69 64 67 {'Weight' } 176 163 131 133 {'BMI' } 24.547 24.071 22.486 20.831 {'Systolic' } 124 109 125 117 {'Diastolic'} 93 77 83 75

您可以对 T3 使用圆点语法,以数组形式访问患者数据。但是,如果输入表的行值不能串联,则输出表的变量是元胞数组。

T3.Smithans = 6×1 1.0000 71.0000 176.0000 24.5467 124.0000 93.0000


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3