本文演示了如何将表中的变量从字符向量元胞数组转换为分类数组。
加载样本数据并创建表
加载从 100 位患者收集的样本数据。
load patients
whos
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
将患者的 Age、Gender、Height、Weight、SelfAssessedHealthStatus 和 Location 数据存储在表中。将变量 LastName 中的唯一标识符用作行名称。
T = table(Age,Gender,Height,Weight,...
SelfAssessedHealthStatus,Location,...
'RowNames',LastName);
将表变量从字符向量元胞数组转换为分类数组
字符向量元胞数组 Gender 和 Location 包含离散的唯一值集合。
将 Gender 和 Location 转换为分类数组。
T.Gender = categorical(T.Gender);
T.Location = categorical(T.Location);
变量 SelfAssessedHealthStatus 包含四个唯一值:Excellent、Fair、Good 和 Poor。
将 SelfAssessedHealthStatus 转换为一个有序分类数组,这样这些类别采用数学排序 Poor < Fair < Good < Excellent。
T.SelfAssessedHealthStatus = categorical(T.SelfAssessedHealthStatus,...
{'Poor','Fair','Good','Excellent'},'Ordinal',true);
输出摘要
使用 summary 汇总表来查看每个变量的数据类型、说明、单位和其他描述性统计量。
format compact
summary(T)
Variables:
Age: 100x1 double
Values:
Min 25
Median 39
Max 50
Gender: 100x1 categorical
Values:
Female 53
Male 47
Height: 100x1 double
Values:
Min 60
Median 67
Max 72
Weight: 100x1 double
Values:
Min 111
Median 142.5
Max 202
SelfAssessedHealthStatus: 100x1 ordinal categorical
Values:
Poor 11
Fair 15
Good 40
Excellent 34
Location: 100x1 categorical
Values:
County General Hospital 39
St. Mary s Medical Center 24
VA Hospital 37
表变量 Gender、SelfAssessedHealthStatus 和 Location 为分类数组。摘要包含每个类别中的元素数的统计。例如,该摘要指示 100 位患者中的 53 位为女性,47 位为男性。
基于类别选择数据
创建一个子表 T1,其包含在 County General Hospital 就医的所有女性患者的年龄、身高和体重。您可以轻松地基于分类数组 Gender 和 Location 中的值创建一个逻辑向量。
rows = T.Location=='County General Hospital' & T.Gender=='Female';
rows 是一个 100×1 的逻辑向量,对于表中满足指定条件(性别为女性,位置为 County General Hospital)的行,该逻辑向量会在其对应位置包含逻辑值 true (1)。
定义变量的子集。
vars = {'Age','Height','Weight'};
使用圆括号创建子表 T1。
T1 = T(rows,vars)
T1=19×3 table
Age Height Weight
___ ______ ______
Brown 49 64 119
Taylor 31 66 132
Anderson 45 68 128
Lee 44 66 146
Walker 28 65 123
Young 25 63 114
Campbell 37 65 135
Evans 39 62 121
Morris 43 64 135
Rivera 29 63 130
Richardson 30 67 141
Cox 28 66 111
Torres 45 70 137
Peterson 32 60 136
Ramirez 48 64 137
Bennett 35 64 131
⋮
A 是一个 19×3 的表。
由于有序分类数组对其类别采用数学排序,因此可以使用关系运算(例如大于和小于)对它们执行按元素比较。
创建一个子表 T2,其包含健康状况评估为较差或一般的所有患者的性别、年龄、身高和体重。
首先,定义要包括在表 T2 中的行子集。
rows = T.SelfAssessedHealthStatus<='Fair';
然后,定义要包括在表 T2 中的变量子集。
vars = {'Gender','Age','Height','Weight'};
使用圆括号创建子表 T2。
T2 = T(rows,vars)
T2=26×4 table
Gender Age Height Weight
______ ___ ______ ______
Johnson Male 43 69 163
Jones Female 40 67 133
Thomas Female 42 66 137
Jackson Male 25 71 174
Garcia Female 27 69 131
Rodriguez Female 39 64 117
Lewis Female 41 62 137
Lee Female 44 66 146
Hall Male 25 70 189
Hernandez Male 36 68 166
Lopez Female 40 66 137
Gonzalez Female 35 66 118
Mitchell Male 39 71 164
Campbell Female 37 65 135
Parker Male 30 68 182
Stewart Male 49 68 170
⋮
T2 是一个 26×4 的表。