主要内容

splitvars

在表或时间表中拆分多列变量

说明

T2 = splitvars(T1) 将拆分 T1 中的所有多列变量,使其成为 T2 中的单列变量。来自 T1 的所有单列变量均保留原样。

  • 如果 T1 中的一个变量有多个列,则 splitvars 基于 T1 中该原始变量的名称为 T2 中的新变量创建唯一名称。

  • 如果 T1 中的变量本身是表,则 splitvars 使用其变量的名称(必要时还包括该表的名称)来为 T2 中的新变量创建唯一名称。

For example, if T1 has a variable named var4, and var4 has two columns, then splitvars(T1) splits var4 into two variables named var4_1 and var4_2 in the output table.

要将多个变量合并到一个多列变量中,请使用 mergevars 函数。

示例

T2 = splitvars(T1,vars) 仅拆分由 vars 指定的表变量。您可以按名称、按位置或使用逻辑索引来指定变量。

示例

T2 = splitvars(T1,vars,NewVariableNames=newNames) 为从 T1 中拆分出来并复制到 T2 的指定变量分配新名称。

示例

示例

全部折叠

使用工作区变量创建一个表。一些变量是具有多列的矩阵。

A = (1:3)';
B = [5 11 12; 20 30 50; 0.1 3.4 5.9]';
C = ["a" "XX";"b" "YY";"c" "ZZ"];
D = [128 256 512]';
T1 = table(A,B,C,D)
T1=3×4 table
    A           B                 C          D 
    _    ________________    ___________    ___

    1     5     20    0.1    "a"    "XX"    128
    2    11     30    3.4    "b"    "YY"    256
    3    12     50    5.9    "c"    "ZZ"    512

拆分变量 BC。输出表中的所有变量都只有一个列。

T2 = splitvars(T1)
T2=3×7 table
    A    B_1    B_2    B_3    C_1    C_2      D 
    _    ___    ___    ___    ___    ____    ___

    1     5     20     0.1    "a"    "XX"    128
    2    11     30     3.4    "b"    "YY"    256
    3    12     50     5.9    "c"    "ZZ"    512

使用 patients.mat 文件中数据的数组创建一个包含多个表的表。

load patients
Personal_Data = table(Age,Smoker);
BMI_Data = table(Height,Weight);
BloodPressure = table(Systolic,Diastolic);
LastName = string(LastName);
T1 = table(LastName,Personal_Data,BMI_Data,BloodPressure)
T1=100×4 table
     LastName     Personal_Data        BMI_Data            BloodPressure    
    __________    _____________    ________________    _____________________

                  Age    Smoker    Height    Weight    Systolic    Diastolic
                  ___    ______    ______    ______    ________    _________
                                                                            
    "Smith"       38     true        71       176        124          93    
    "Johnson"     43     false       69       163        109          77    
    "Williams"    38     false       64       131        125          83    
    "Jones"       40     false       67       133        117          75    
    "Brown"       49     false       64       119        122          80    
    "Davis"       46     false       68       142        121          70    
    "Miller"      33     true        64       142        130          88    
    "Wilson"      40     false       68       180        115          82    
    "Moore"       28     false       68       183        115          78    
    "Taylor"      31     false       66       132        118          86    
    "Anderson"    45     false       68       128        114          77    
    "Thomas"      42     false       66       137        115          68    
    "Jackson"     25     false       71       174        127          74    
    "White"       39     true        72       202        130          95    
    "Harris"      36     false       65       129        114          79    
    "Martin"      48     true        71       181        130          92    
      ⋮

BloodPressure 指定为要拆分的变量。

T2 = splitvars(T1,"BloodPressure")
T2=100×5 table
     LastName     Personal_Data        BMI_Data        Systolic    Diastolic
    __________    _____________    ________________    ________    _________

                  Age    Smoker    Height    Weight                         
                  ___    ______    ______    ______                         
                                                                            
    "Smith"       38     true        71       176        124          93    
    "Johnson"     43     false       69       163        109          77    
    "Williams"    38     false       64       131        125          83    
    "Jones"       40     false       67       133        117          75    
    "Brown"       49     false       64       119        122          80    
    "Davis"       46     false       68       142        121          70    
    "Miller"      33     true        64       142        130          88    
    "Wilson"      40     false       68       180        115          82    
    "Moore"       28     false       68       183        115          78    
    "Taylor"      31     false       66       132        118          86    
    "Anderson"    45     false       68       128        114          77    
    "Thomas"      42     false       66       137        115          68    
    "Jackson"     25     false       71       174        127          74    
    "White"       39     true        72       202        130          95    
    "Harris"      36     false       65       129        114          79    
    "Martin"      48     true        71       181        130          92    
      ⋮

要按名称指定多个变量,请使用字符串数组。

T3 = splitvars(T1,["BMI_Data" "BloodPressure"])
T3=100×6 table
     LastName     Personal_Data    Height    Weight    Systolic    Diastolic
    __________    _____________    ______    ______    ________    _________

                  Age    Smoker                                             
                  ___    ______                                             
                                                                            
    "Smith"       38     true        71       176        124          93    
    "Johnson"     43     false       69       163        109          77    
    "Williams"    38     false       64       131        125          83    
    "Jones"       40     false       67       133        117          75    
    "Brown"       49     false       64       119        122          80    
    "Davis"       46     false       68       142        121          70    
    "Miller"      33     true        64       142        130          88    
    "Wilson"      40     false       68       180        115          82    
    "Moore"       28     false       68       183        115          78    
    "Taylor"      31     false       66       132        118          86    
    "Anderson"    45     false       68       128        114          77    
    "Thomas"      42     false       66       137        115          68    
    "Jackson"     25     false       71       174        127          74    
    "White"       39     true        72       202        130          95    
    "Harris"      36     false       65       129        114          79    
    "Martin"      48     true        71       181        130          92    
      ⋮

要按位置指定变量,请使用数值数组。

T4 = splitvars(T1,[2 4])
T4=100×6 table
     LastName     Age    Smoker        BMI_Data        Systolic    Diastolic
    __________    ___    ______    ________________    ________    _________

                                   Height    Weight                         
                                   ______    ______                         
                                                                            
    "Smith"       38     true        71       176        124          93    
    "Johnson"     43     false       69       163        109          77    
    "Williams"    38     false       64       131        125          83    
    "Jones"       40     false       67       133        117          75    
    "Brown"       49     false       64       119        122          80    
    "Davis"       46     false       68       142        121          70    
    "Miller"      33     true        64       142        130          88    
    "Wilson"      40     false       68       180        115          82    
    "Moore"       28     false       68       183        115          78    
    "Taylor"      31     false       66       132        118          86    
    "Anderson"    45     false       68       128        114          77    
    "Thomas"      42     false       66       137        115          68    
    "Jackson"     25     false       71       174        127          74    
    "White"       39     true        72       202        130          95    
    "Harris"      36     false       65       129        114          79    
    "Martin"      48     true        71       181        130          92    
      ⋮

使用 patients.mat 文件中的数据创建一个包含多列变量的表。

load patients
Personal_Data = [Age,Height,Weight];
BloodPressure = [Systolic,Diastolic];
T1 = table(LastName,Smoker,Personal_Data,BloodPressure)
T1=100×4 table
      LastName      Smoker     Personal_Data      BloodPressure
    ____________    ______    ________________    _____________

    {'Smith'   }    true      38     71    176     124     93  
    {'Johnson' }    false     43     69    163     109     77  
    {'Williams'}    false     38     64    131     125     83  
    {'Jones'   }    false     40     67    133     117     75  
    {'Brown'   }    false     49     64    119     122     80  
    {'Davis'   }    false     46     68    142     121     70  
    {'Miller'  }    true      33     64    142     130     88  
    {'Wilson'  }    false     40     68    180     115     82  
    {'Moore'   }    false     28     68    183     115     78  
    {'Taylor'  }    false     31     66    132     118     86  
    {'Anderson'}    false     45     68    128     114     77  
    {'Thomas'  }    false     42     66    137     115     68  
    {'Jackson' }    false     25     71    174     127     74  
    {'White'   }    true      39     72    202     130     95  
    {'Harris'  }    false     36     65    129     114     79  
    {'Martin'  }    true      48     71    181     130     92  
      ⋮

拆分 BloodPressure 并为输出表中的新变量指定新名称。

T2 = splitvars(T1,"BloodPressure",NewVariableNames=["Systolic" "Diastolic"])
T2=100×5 table
      LastName      Smoker     Personal_Data      Systolic    Diastolic
    ____________    ______    ________________    ________    _________

    {'Smith'   }    true      38     71    176      124          93    
    {'Johnson' }    false     43     69    163      109          77    
    {'Williams'}    false     38     64    131      125          83    
    {'Jones'   }    false     40     67    133      117          75    
    {'Brown'   }    false     49     64    119      122          80    
    {'Davis'   }    false     46     68    142      121          70    
    {'Miller'  }    true      33     64    142      130          88    
    {'Wilson'  }    false     40     68    180      115          82    
    {'Moore'   }    false     28     68    183      115          78    
    {'Taylor'  }    false     31     66    132      118          86    
    {'Anderson'}    false     45     68    128      114          77    
    {'Thomas'  }    false     42     66    137      115          68    
    {'Jackson' }    false     25     71    174      127          74    
    {'White'   }    true      39     72    202      130          95    
    {'Harris'  }    false     36     65    129      114          79    
    {'Martin'  }    true      48     71    181      130          92    
      ⋮

拆分 BMI_DataBloodPressure。对于要拆分的每个变量,您必须提供一个具有正确数量的新名称的元胞数组。

T3 = splitvars(T1,["Personal_Data" "BloodPressure"], ...
     NewVariableNames={["Age" "Height" "Weight"] ["Systolic" "Diastolic"]})
T3=100×7 table
      LastName      Smoker    Age    Height    Weight    Systolic    Diastolic
    ____________    ______    ___    ______    ______    ________    _________

    {'Smith'   }    true      38       71       176        124          93    
    {'Johnson' }    false     43       69       163        109          77    
    {'Williams'}    false     38       64       131        125          83    
    {'Jones'   }    false     40       67       133        117          75    
    {'Brown'   }    false     49       64       119        122          80    
    {'Davis'   }    false     46       68       142        121          70    
    {'Miller'  }    true      33       64       142        130          88    
    {'Wilson'  }    false     40       68       180        115          82    
    {'Moore'   }    false     28       68       183        115          78    
    {'Taylor'  }    false     31       66       132        118          86    
    {'Anderson'}    false     45       68       128        114          77    
    {'Thomas'  }    false     42       66       137        115          68    
    {'Jackson' }    false     25       71       174        127          74    
    {'White'   }    true      39       72       202        130          95    
    {'Harris'  }    false     36       65       129        114          79    
    {'Martin'  }    true      48       71       181        130          92    
      ⋮

输入参数

全部折叠

输入表,指定为表或时间表。

输入表中的变量,指定为字符串数组、字符向量、字符向量元胞数组、pattern 标量、数值数组或逻辑数组。

拆分后的变量的名称,指定为字符串数组或字符向量元胞数组。

输出参量

全部折叠

具有拆分变量的输出表,以表或时间表形式返回。

扩展功能

全部展开

版本历史记录

在 R2018a 中推出