Main Content

将表变量中的文本转换为分类数组

此示例说明如何将表中的变量从文本转换为 categorical 数组。同样的工作流适用于字符串数组形式的表变量和字符向量元胞数组形式的变量。

加载样本数据并创建表

加载从 100 位患者收集的样本数据。

load patients

将患者的 AgeHeightWeightSelfAssessedHealthStatusLocation 数据存储在表中。将变量 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"              
      ⋮

将表变量从文本转换为分类数组

变量 LocationSelfAssessedHealthStatus 包含离散的唯一值集合。当变量包含一组可视为类别的值(如位置或状态)时,请考虑将其转换为 categorical 变量。

Location 转换为 categorical 数组。

T.Location = categorical(T.Location);

变量 SelfAssessedHealthStatus 包含四个唯一值:ExcellentFairGoodPoor

SelfAssessedHealthStatus 转换为一个有序 categorical 数组,这样这些类别采用数学排序 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   
    Height: 100x1 double
        Values:
            Min          60   
            Median       67   
            Max          72   
    Weight: 100x1 double
        Values:
            Min          111  
            Median     142.5  
            Max          202  
    Smoker: 100x1 logical
        Values:
            True        34   
            False       66   
    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   

表变量 SelfAssessedHealthStatusLocationcategorical 数组。摘要包含每个类别中的元素数的统计。例如,该摘要指示 100 位患者中有 11 位将自己的健康状况评估为 Poor,34 位将自己的健康状况评估为 Excellent。

基于类别选择数据

创建一个子表 T1,其包含在 County General Hospital 就医的所有患者的年龄、身高和体重,并将他们自己的健康状况评估为 Excellent。您可以轻松地基于 categorical 数组 LocationSelfAssessedHealthStatus 中的值创建一个逻辑向量。

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  
      ⋮

相关示例

详细信息