rows2vars

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

Описание

пример

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

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

пример

T2 = rows2vars(T1,Name,Value) задает дополнительные аргументы с помощью одного или нескольких аргументов пары "имя-значение". Например, можно использовать 'VariableNamesSource' аргумент пары "имя-значение", чтобы задать источник имен переменных T2.

Примеры

свернуть все

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

Загрузите массивы данных из patients.mat файл. Составьте таблицу, которая содержит LastName, Gender, Ageвысота, и 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: Table variable names that were not valid MATLAB identifiers have been modified. Since table variable names must be unique, any table variable names that happened to match the new identifiers also have been modified.
To use the original row names as new variable names, set 'PreserveVariableNames' to true.
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        

Начиная в R2020a, можно взять имена из входной таблицы или расписания и использовать их в качестве имен переменных в выходной таблице без модификации. Чтобы сохранить настоящие имена, используйте 'VariableNamingRule' аргумент пары "имя-значение".

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

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

Переориентируйте расписание так, чтобы его времена строки стали именами переменных в выходной таблице. Преобразуйте datetime значения к строкам и заповеднику получившиеся имена с помощью 'VariableNamingRule' пара "имя-значение".

T = rows2vars(Boston,'VariableNamingRule','preserve')
T=3×7 table
    OriginalVariableNames    2016-06-09 06:03:00    2016-06-09 12:00:23    2016-06-09 18:02:57    2016-06-10 06:01:47    2016-06-10 12:06:00    2016-06-10 18: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        

Имена переменных в T не допустимые идентификаторы MATLAB, потому что даты запускаются с номера. Однако можно использовать запись через точку, чтобы относиться к таким переменным, с помощью круглых скобок.

T.('2016-06-09 06:03:00')
ans = 3×1

   59.5000
    0.1000
    0.0500

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

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=9×1 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'  }

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

свернуть все

Входная таблица в виде таблицы или расписания.

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'VariableNamingRule','preserve' настоящие имена консервов взяты из T1, не изменяя их, чтобы быть допустимыми идентификаторами MATLAB®.

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

Значение 'VariableNamesSource'

Значение

Вектор символов или строковый скаляр

Имя переменной во входной таблице T1.

Целочисленный n

Топеременная th в T1.

Логический вектор, длина которого равняется количеству переменных в T1

Тоэлементом th является 1 TRUE), соответствие nпеременная th T1. Всеми другими элементами является 0 ложь).

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

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

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

Выбранные переменные от T1В виде разделенной запятой пары, состоящей из 'DataVariables' и вектор символов, массив ячеек из символьных векторов, массив строк, положительное целое число, вектор из положительных целых чисел, логический вектор или объект индекса. rows2vars функция выбирает переменные, заданные значением 'DataVariables' и переориентирует только те переменные, чтобы стать строками T2. Остающиеся переменные T1 отбрасываются.

Управляйте для именования переменных в T2В виде разделенной запятой пары, состоящей из 'VariableNamingRule' и любой значение 'modify' или 'preserve'.

Значения 'VariableNamingRule' задайте следующие правила для именования переменной в выходной таблице или расписании.

Значение 'VariableNamingRule'

Правило

'modify' (значение по умолчанию)

Измените имена, взятые из входной таблицы или расписания так, чтобы соответствующие имена переменных в выходе были также допустимыми идентификаторами MATLAB.

'preserve'

Сохраните настоящие имена, взятые из входной таблицы или расписания. Соответствующие имена переменных в выходе могут иметь любые символы Unicode®, включая символы non-ASCII и пробелы.

Примечание: В некоторых случаях, rows2vars должен изменить настоящие имена даже когда 'preserve' правило. Такие случаи включают:

  • Двойные названия

  • Имена, которые конфликтуют с табличными именами размерности

  • Имена, которые конфликтуют с зарезервированным именем.

  • Имена, длины которых превышают значение namelengthmax.

Расширенные возможности

Смотрите также

| | | | | |

Введенный в R2018a