Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

splitvars

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

说明

示例

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

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

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

要将多个变量合并到一个多列变量中,请使用 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(Gender,Age);
BMI_Data = table(Height,Weight);
BloodPressure = table(Systolic,Diastolic);
T1 = table(LastName,Personal_Data,BMI_Data,BloodPressure);
head(T1,3)
ans=3×4 table
      LastName        Personal_Data          BMI_Data            BloodPressure    
                      Gender      Age    Height    Weight    Systolic    Diastolic
    ____________    _________________    ________________    _____________________

    {'Smith'   }    {'Male'  }    38       71       176        124          93    
    {'Johnson' }    {'Male'  }    43       69       163        109          77    
    {'Williams'}    {'Female'}    38       64       131        125          83    

BloodPressure 指定为要拆分的变量。

T2 = splitvars(T1,'BloodPressure');
head(T2,3)
ans=3×5 table
      LastName        Personal_Data          BMI_Data        Systolic    Diastolic
                      Gender      Age    Height    Weight                         
    ____________    _________________    ________________    ________    _________

    {'Smith'   }    {'Male'  }    38       71       176        124          93    
    {'Johnson' }    {'Male'  }    43       69       163        109          77    
    {'Williams'}    {'Female'}    38       64       131        125          83    

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

T3 = splitvars(T1,{'BMI_Data','BloodPressure'});
head(T3,3)
ans=3×6 table
      LastName        Personal_Data      Height    Weight    Systolic    Diastolic
                      Gender      Age                                             
    ____________    _________________    ______    ______    ________    _________

    {'Smith'   }    {'Male'  }    38       71       176        124          93    
    {'Johnson' }    {'Male'  }    43       69       163        109          77    
    {'Williams'}    {'Female'}    38       64       131        125          83    

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

T4 = splitvars(T1,[2 4]);
head(T4,3)
ans=3×6 table
      LastName        Gender      Age        BMI_Data        Systolic    Diastolic
                                         Height    Weight                         
    ____________    __________    ___    ________________    ________    _________

    {'Smith'   }    {'Male'  }    38       71       176        124          93    
    {'Johnson' }    {'Male'  }    43       69       163        109          77    
    {'Williams'}    {'Female'}    38       64       131        125          83    

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

load patients
Personal_Data = [Age,Height,Weight];
BloodPressure = [Systolic,Diastolic];
T1 = table(LastName,Gender,Personal_Data,BloodPressure);
head(T1,3)
ans=3×4 table
      LastName        Gender       Personal_Data      BloodPressure
    ____________    __________    ________________    _____________

    {'Smith'   }    {'Male'  }    38     71    176     124     93  
    {'Johnson' }    {'Male'  }    43     69    163     109     77  
    {'Williams'}    {'Female'}    38     64    131     125     83  

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

T2 = splitvars(T1,'BloodPressure','NewVariableNames',{'Systolic','Diastolic'});
head(T2,3)
ans=3×5 table
      LastName        Gender       Personal_Data      Systolic    Diastolic
    ____________    __________    ________________    ________    _________

    {'Smith'   }    {'Male'  }    38     71    176      124          93    
    {'Johnson' }    {'Male'  }    43     69    163      109          77    
    {'Williams'}    {'Female'}    38     64    131      125          83    

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

T3 = splitvars(T1,{'Personal_Data','BloodPressure'},...
     'NewVariableNames',{{'Age','Height','Weight'},{'Systolic','Diastolic'}});
head(T3,3)
ans=3×7 table
      LastName        Gender      Age    Height    Weight    Systolic    Diastolic
    ____________    __________    ___    ______    ______    ________    _________

    {'Smith'   }    {'Male'  }    38       71       176        124          93    
    {'Johnson' }    {'Male'  }    43       69       163        109          77    
    {'Williams'}    {'Female'}    38       64       131        125          83    

输入参数

全部折叠

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

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

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

扩展功能

版本历史记录

在 R2018a 中推出