将表变量中的文本转换为分类数组
此示例说明如何将表中的变量从文本转换为 categorical
数组。同样的工作流适用于字符串数组形式的表变量和字符向量元胞数组形式的变量。
加载样本数据并创建表
加载从 100 位患者收集的样本数据。
load patients
将患者的 Age
、Height
、Weight
、SelfAssessedHealthStatus
和 Location
数据存储在表中。将变量 LastName
中的唯一标识符用作行名称。要将字符向量元胞数组形式的变量转换为字符串数组,请使用 convertvars
函数。
T = table(Age,Height,Weight,Smoker,... SelfAssessedHealthStatus,Location,... 'RowNames',LastName); T = convertvars(T,@iscellstr,"string")
T=100×6 table
Age Height Weight Smoker SelfAssessedHealthStatus Location
___ ______ ______ ______ ________________________ ___________________________
Smith 38 71 176 true "Excellent" "County General Hospital"
Johnson 43 69 163 false "Fair" "VA Hospital"
Williams 38 64 131 false "Good" "St. Mary's Medical Center"
Jones 40 67 133 false "Fair" "VA Hospital"
Brown 49 64 119 false "Good" "County General Hospital"
Davis 46 68 142 false "Good" "St. Mary's Medical Center"
Miller 33 64 142 true "Good" "VA Hospital"
Wilson 40 68 180 false "Good" "VA Hospital"
Moore 28 68 183 false "Excellent" "St. Mary's Medical Center"
Taylor 31 66 132 false "Excellent" "County General Hospital"
Anderson 45 68 128 false "Excellent" "County General Hospital"
Thomas 42 66 137 false "Poor" "St. Mary's Medical Center"
Jackson 25 71 174 false "Poor" "VA Hospital"
White 39 72 202 true "Excellent" "VA Hospital"
Harris 36 65 129 false "Good" "St. Mary's Medical Center"
Martin 48 71 181 true "Good" "VA Hospital"
⋮
将表变量从文本转换为分类数组
变量 Location
和 SelfAssessedHealthStatus
包含离散的唯一值集合。当变量包含一组可视为类别的值(如位置或状态)时,请考虑将其转换为 categorical
变量。
将 Location
转换为 categorical
数组。
T.Location = categorical(T.Location);
变量 SelfAssessedHealthStatus
包含四个唯一值:Excellent
、Fair
、Good
和 Poor
。
将 SelfAssessedHealthStatus
转换为一个有序 categorical
数组,这样这些类别采用数学排序 Poor < Fair < Good < Excellent
。
T.SelfAssessedHealthStatus = categorical(T.SelfAssessedHealthStatus,... {'Poor','Fair','Good','Excellent'},'Ordinal',true);
输出摘要
使用 summary
汇总表来查看每个变量的数据类型、说明、单位和其他描述性统计量。
format compact
summary(T)
T: 100x6 table Variables: Age: double Height: double Weight: double Smoker: logical (34 true) SelfAssessedHealthStatus: ordinal categorical (4 categories) Location: categorical (3 categories) Statistics for applicable variables: NumMissing Min Median Max Mean Std Age 0 25 39 50 38.2800 7.2154 Height 0 60 67 72 67.0700 2.8365 Weight 0 111 142.5000 202 154 26.5714 SelfAssessedHealthStatus 0 Poor Good Excellent Location 0
表变量 SelfAssessedHealthStatus
和 Location
是 categorical
数组。摘要包含每个类别中的元素数的统计。例如,该摘要指示 100 位患者中有 11 位将自己的健康状况评估为 Poor,34 位将自己的健康状况评估为 Excellent。
基于类别选择数据
创建一个子表 T1
,其包含在 County General Hospital 就医的所有患者的年龄、身高和体重,并将他们自己的健康状况评估为 Excellent。您可以轻松地基于 categorical
数组 Location
和 SelfAssessedHealthStatus
中的值创建一个逻辑向量。
rows = T.Location=='County General Hospital' & T.SelfAssessedHealthStatus=='Excellent';
rows
是一个 100×1 逻辑向量,对于表中满足指定条件(位置为 County General Hospital 且患者将其健康状况评估为 Excellent)的行,该逻辑向量会在其对应位置包含逻辑值 true
(1
)。
定义变量的子集。
vars = ["Age","Height","Weight"];
使用圆括号创建子表 T1
。
T1 = T(rows,vars)
T1=13×3 table
Age Height Weight
___ ______ ______
Smith 38 71 176
Taylor 31 66 132
Anderson 45 68 128
King 30 67 186
Edwards 42 70 158
Rivera 29 63 130
Richardson 30 67 141
Torres 45 70 137
Peterson 32 60 136
Ramirez 48 64 137
Barnes 42 66 194
Butler 38 68 184
Bryant 48 66 134
由于有序 categorical
数组对其类别采用数学排序,因此可以使用关系运算(例如大于和小于)对它们执行按元素比较。
创建一个子表 T2
,其包含健康状况评估为 Poor 或 Fair 的所有患者的年龄、身高和体重。
首先,定义要包括在表 T2
中的行子集。
rows = T.SelfAssessedHealthStatus<='Fair';
然后,定义要包括在表 T2
中的变量子集。
vars = ["Age","Height","Weight"];
使用圆括号创建子表 T2
。
T2 = T(rows,vars)
T2=26×3 table
Age Height Weight
___ ______ ______
Johnson 43 69 163
Jones 40 67 133
Thomas 42 66 137
Jackson 25 71 174
Garcia 27 69 131
Rodriguez 39 64 117
Lewis 41 62 137
Lee 44 66 146
Hall 25 70 189
Hernandez 36 68 166
Lopez 40 66 137
Gonzalez 35 66 118
Mitchell 39 71 164
Campbell 37 65 135
Parker 30 68 182
Stewart 49 68 170
⋮