rows2vars

Переориентируйте таблицу или расписание так, чтобы строки стали переменными

Синтаксис

T2 = rows2vars(T1)
T2 = rows2vars(T1,'VariableNamesSource',varnames)
T2 = rows2vars(___,'DataVariables',datavars)

Описание

пример

T2 = rows2vars(T1) переориентирует строки T1, так, чтобы они стали переменными в выходной таблице T2, как показано в схеме. Если rows2vars может конкатенировать содержимое строк T1, то соответствующие переменные T2 являются массивами. В противном случае переменные T2 являются массивами ячеек. rows2vars всегда возвращает таблицу, хотя T1 может быть или таблицей или расписанием.

Функция rows2vars копирует имена переменных T1 к новой переменной T2. Если T1 имеет имена строки или времена строки, то те имена или времена становятся именами переменных T2. В противном случае rows2vars генерирует, называет Var1,…,VarN как имена переменных T2.

пример

T2 = rows2vars(T1,'VariableNamesSource',varnames) задает переменную в T1 как источник имен, данных переменным T2. Можно задать varnames как имя переменной или числовой или логический индекс.

пример

T2 = rows2vars(___,'DataVariables',datavars) выбирает переменные T1, заданного datavars, и переориентирует только те переменные, чтобы стать строками T2. Остающиеся переменные T1 отбрасываются. datavars может быть одними или несколькими именами переменных, массивом числовых или логических индексов или объектом индексирования (например, вывод функции vartype). Можно использовать этот синтаксис с входными параметрами любого из предыдущих синтаксисов.

Если вы задаете переменную с помощью аргумента в виде пар "имя-значение" 'VariableNamesSource' от предыдущего синтаксиса, то вы не можете задать ту переменную в datavars.

Примеры

свернуть все

Составьте таблицы, и затем переориентируйте их строки, чтобы быть переменными в новых таблицах.

Загрузите массивы данных от patients.mat matfile. Составьте таблицу, которая содержит LastName, Gender, Age, Height и переменные Weight.

load patients
T1 = table(LastName,Gender,Age,Height,Weight);
head(T1,3)
ans=3×5 table
     LastName      Gender     Age    Height    Weight
    __________    ________    ___    ______    ______

    'Smith'       'Male'      38       71       176  
    'Johnson'     'Male'      43       69       163  
    'Williams'    'Female'    38       64       131  

Переориентируйте строки T1, чтобы быть переменными выходной таблицы.

T2 = rows2vars(T1);

Отобразите первые четыре переменные T2. Первая переменная T2 содержит имена переменных T1. Остающиеся переменные T2 соответствуют строкам T1. Поскольку T1 не имел никаких меток строки, переменные T2 имеют имена по умолчанию, Var1 к VarN для переменных N.

T2(:,1:4)
ans=5×4 table
    OriginalVariableNames     Var1        Var2          Var3   
    _____________________    _______    _________    __________

         'LastName'          'Smith'    'Johnson'    'Williams'
         'Gender'            'Male'     'Male'       'Female'  
         'Age'               [   38]    [     43]    [      38]
         'Height'            [   71]    [     69]    [      64]
         'Weight'            [  176]    [    163]    [     131]

Составьте таблицу с именами строки. Если таблица имеет имена строки, то rows2vars превращает имена строки на имена переменных.

T3 = table(Gender,Age,Height,Weight,'RowNames',LastName);
head(T3,3)
ans=3×4 table
                 Gender     Age    Height    Weight
                ________    ___    ______    ______

    Smith       'Male'      38       71       176  
    Johnson     'Male'      43       69       163  
    Williams    'Female'    38       64       131  

Переориентируйте строки T3.

T4 = rows2vars(T3);
T4(:,1:4)
ans=4×4 table
    OriginalVariableNames    Smith     Johnson    Williams
    _____________________    ______    _______    ________

          'Gender'           'Male'    'Male'     'Female'
          'Age'              [  38]    [  43]     [    38]
          'Height'           [  71]    [  69]     [    64]
          'Weight'           [ 176]    [ 163]     [   131]

Загрузите расписание и отобразите его.

load bostonTT
Boston
Boston=6×3 timetable
           Time            Temp    WindSpeed    Rain
    ___________________    ____    _________    ____

    2016-06-09 06:03:00    59.5       0.1       0.05
    2016-06-09 12:00:23      63       2.3       0.08
    2016-06-09 18:02:57    61.7       3.1       0.13
    2016-06-10 06:01:47    55.4       5.7       0.15
    2016-06-10 12:06:00    62.3       2.6       0.87
    2016-06-10 18:02:57    58.8       6.2       0.33

Переориентируйте его так, чтобы его строки стали переменными в выводе. Функция rows2vars превращает времена строки на имена, но должна изменить их так, чтобы они были допустимыми именами переменной. Кроме того, выходным аргументом, возвращенным rows2vars, всегда является таблица, даже когда входной параметр является расписанием.

T = rows2vars(Boston)
Warning: Variable names were modified to make them valid MATLAB identifiers.
T=3×7 table
    OriginalVariableNames    x2016_06_0906_03_00    x2016_06_0912_00_23    x2016_06_0918_02_57    x2016_06_1006_01_47    x2016_06_1012_06_00    x2016_06_1018_02_57
    _____________________    ___________________    ___________________    ___________________    ___________________    ___________________    ___________________

         'Temp'                     59.5                     63                   61.7                   55.4                   62.3                   58.8        
         'WindSpeed'                 0.1                    2.3                    3.1                    5.7                    2.6                    6.2        
         'Rain'                     0.05                   0.08                   0.13                   0.15                   0.87                   0.33        

Считайте данные из электронной таблицы в таблицу. Отобразите первые три строки.

T1 = readtable('patients.xls');
head(T1,3)
ans=3×10 table
     LastName      Gender     Age             Location              Height    Weight    Smoker    Systolic    Diastolic    SelfAssessedHealthStatus
    __________    ________    ___    ___________________________    ______    ______    ______    ________    _________    ________________________

    'Smith'       'Male'      38     'County General Hospital'        71       176      true        124          93              'Excellent'       
    'Johnson'     'Male'      43     'VA Hospital'                    69       163      false       109          77              'Fair'            
    'Williams'    'Female'    38     'St. Mary's Medical Center'      64       131      false       125          83              'Good'            

Переориентируйте строки T1, чтобы быть переменными новой таблицы, T2. Укажите, что переменная LastName от T1 является источником имен переменных T2.

T2 = rows2vars(T1,'VariableNamesSource','LastName');

Отобразите первые четыре переменные T2. Первая переменная T2 содержит имена переменных T1. Остающиеся переменные T2 соответствуют строкам T1.

T2(:,1:4)
ans=9×4 table
      OriginalVariableNames                 Smith                 Johnson                Williams          
    __________________________    _________________________    _____________    ___________________________

    'Gender'                      'Male'                       'Male'           'Female'                   
    'Age'                         [                     38]    [         43]    [                       38]
    'Location'                    'County General Hospital'    'VA Hospital'    'St. Mary's Medical Center'
    'Height'                      [                     71]    [         69]    [                       64]
    'Weight'                      [                    176]    [        163]    [                      131]
    'Smoker'                      [                      1]    [          0]    [                        0]
    'Systolic'                    [                    124]    [        109]    [                      125]
    'Diastolic'                   [                     93]    [         77]    [                       83]
    'SelfAssessedHealthStatus'    'Excellent'                  'Fair'           'Good'                     

Отобразите данные в T2.Smith. В этом примере каждая переменная T2 является 9 1 массивом ячеек, потому что значения в строках T1 не могут быть конкатенированы в массивы.

T2.Smith
ans = 9x1 cell array
    {'Male'                   }
    {[                     38]}
    {'County General Hospital'}
    {[                     71]}
    {[                    176]}
    {[                      1]}
    {[                    124]}
    {[                     93]}
    {'Excellent'              }

Считайте данные из электронной таблицы в таблицу. Используйте первый столбец электронной таблицы как имена строки таблицы. Отобразите первые три строки.

T1 = readtable('patients.xls','ReadRowNames',true);
head(T1,3)
ans=3×9 table
                 Gender     Age             Location              Height    Weight    Smoker    Systolic    Diastolic    SelfAssessedHealthStatus
                ________    ___    ___________________________    ______    ______    ______    ________    _________    ________________________

    Smith       'Male'      38     'County General Hospital'        71       176      true        124          93              'Excellent'       
    Johnson     'Male'      43     'VA Hospital'                    69       163      false       109          77              'Fair'            
    Williams    'Female'    38     'St. Mary's Medical Center'      64       131      false       125          83              'Good'            

Переориентируйте заданные переменные от T1 и отбросьте остальных. Чтобы задать переменные данных по наименованию, используйте массив ячеек из символьных векторов.

T2 = rows2vars(T1,'DataVariables',{'Gender','Age','Height','Weight'});
T2(:,1:4)
ans=4×4 table
    OriginalVariableNames    Smith     Johnson    Williams
    _____________________    ______    _______    ________

          'Gender'           'Male'    'Male'     'Female'
          'Age'              [  38]    [  43]     [    38]
          'Height'           [  71]    [  69]     [    64]
          'Weight'           [ 176]    [ 163]     [   131]

Также можно задать переменные данных положением во входной таблице. Чтобы задать положения переменных, используйте числовой массив.

T3 = rows2vars(T1,'DataVariables',[1 2 6:9]);
T3(:,1:4)
ans=6×4 table
      OriginalVariableNames          Smith       Johnson    Williams
    __________________________    ___________    _______    ________

    'Gender'                      'Male'         'Male'     'Female'
    'Age'                         [       38]    [  43]     [    38]
    'Smoker'                      [        1]    [   0]     [     0]
    'Systolic'                    [      124]    [ 109]     [   125]
    'Diastolic'                   [       93]    [  77]     [    83]
    'SelfAssessedHealthStatus'    'Excellent'    'Fair'     'Good'  

Входные параметры

свернуть все

Входная таблица, заданная как таблица или расписание.

Источник имен для выходных табличных переменных, заданных как вектор символа, представляет в виде строки скаляр, целое число или логический массив.

  • Если varnames является вектором символа или скаляром строки, то это - имя переменной во входной таблице T1.

  • Если varnames является целочисленный n, то это указывает на n th переменная в T1.

  • Если varnames является логическим массивом, то он указывает на n th переменная путем определения ее n th элемент как 1 (true). Всеми другими элементами должен быть 0 (false).

В то время как varnames должен быть именем, номером или логическим массивом, который задает табличную переменную, сама переменная может иметь любой тип данных с этими ограничениями.

  • Значения, содержавшиеся в заданной табличной переменной, должны иметь тип данных, который позволяет значениям быть преобразованными в строки. Например, varnames может быть именем табличной переменной, которая содержит массив datetime, потому что значения datetime могут быть преобразованы в строки.

  • Количество имен, взятых от заданной табличной переменной, должно совпадать с количеством строк входной таблицы.

Переменные во входной таблице, заданной как вектор символа, массив ячеек из символьных векторов, массив строк, числовой массив, логический массив, или преобразовывающий объект в нижний индекс.

Представленный в R2018a

Была ли эта тема полезной?