Переориентировать таблицу или расписание таким образом, чтобы строки становились переменными
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, 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
BostonBoston=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
BostonBoston=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' }
T1 - Входная таблицаВходная таблица, заданная как таблица или расписание.
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
'VariableNamingRule','preserve' сохраняет оригинальные имена, взятые из T1, без изменения их на действительные идентификаторы MATLAB ®.'VariableNamesSource' - Переменная в T1 который содержит имена переменныхПеременная в T1 который содержит имена переменных, указанные как пара, разделенная запятыми, состоящая из 'VariableNamesSource' и символьный вектор, строковый скаляр, положительное целое число или логический вектор. rows2vars функция интерпретирует значение 'VariableNamesSource' как показано в таблице.
Значение | Значение |
|---|---|
Вектор символов или строковый скаляр | Имя переменной во входной таблице |
Целое число | n-я переменная в T1. |
Логический вектор, длина которого равна количеству переменных в | |
В то время как значение 'VariableNamesSource' должен быть именем, числом или логическим массивом, указывающим табличную переменную, сама переменная может иметь любой тип данных с этими ограничениями.
Значения, содержащиеся в указанной переменной таблицы, должны иметь тип данных, позволяющий преобразовывать значения в строки. Например, значение 'VariableNamesSource' может быть именем переменной таблицы, содержащей datetime массив, потому что datetime значения могут быть преобразованы в строки.
Количество имен, взятых из указанной переменной таблицы, должно соответствовать количеству строк входной таблицы.
'DataVariables' - Выбранные переменные из T1Выбранные переменные из T1, указанная как пара, разделенная запятыми, состоящая из 'DataVariables' и символьный вектор, клеточный массив символьных векторов, строковый массив, положительное целое число, вектор положительных целых чисел, логический вектор или объект подстрочного индекса. rows2vars функция выбирает переменные, указанные значением 'DataVariables' и переориентирует только эти переменные, чтобы они стали строками T2. Остальные переменные T1 отбрасываются.
'VariableNamingRule' - Правило именования переменных в T2'modify' (по умолчанию) | 'preserve'Правило именования переменных в T2, указанная как пара, разделенная запятыми, состоящая из 'VariableNamingRule' и либо значение 'modify' или 'preserve'.
Значения 'VariableNamingRule' укажите следующие правила именования переменных в выходной таблице или расписании.
Значение | Правило |
|---|---|
| Измените имена, взятые из входной таблицы или расписания, так, чтобы имена соответствующих переменных в выходных данных также были действительными идентификаторами MATLAB. |
| Сохраните исходные имена, взятые из входной таблицы или расписания. Имена соответствующих переменных в выходных данных могут содержать любые символы Юникода ®, включая пробелы и символы, не относящиеся к ASCII. Примечание: В некоторых случаях
|
Примечания и ограничения по использованию:
Расписания не поддерживаются.
Входная таблица не может иметь переменный размер.
'VariableNamesSource' аргумент «имя-значение» не поддерживается.
Значение 'DataVariables' аргумент name-value должен быть постоянным.
Значение 'VariableNamingRule' аргумент name-value должен быть постоянным.
При назначении имен строк входной таблице вектор имен строк должен быть постоянным.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.