Таблицы и расписания обеспечивают способы пометить строки в ваших данных. В таблицах можно пометить строки именами. В расписаниях необходимо пометить строки датами, времена или оба. Имена строки являются дополнительными для таблиц, но времена строки требуются для расписаний. Эти метки строки являются частью метаданных в таблице или расписании. В некоторых функциях также можно использовать метки строки в качестве ключевых переменных, сгруппированных переменных, и так далее, как можно использовать переменные данных в таблице или расписании. Этими функциями является sortrowsсоединениеinnerjoinouterjoinvarfunrowfunстек, и unstack. Существуют некоторые ограничения на использование этих табличных функций и на использование меток строки как ключевые переменные.
Например, можно отсортировать расписание на его временах строки на одном или нескольких его переменных данных, или на временах строки и переменных данных вместе.
Создайте расписание с помощью timetable функция. Расписание имеет времена строки по своему первому измерению, помечая строки. Времена строки являются свойством расписания, не переменной расписания.
Date = datetime(2016,7,[10;10;11;11;10;10;11;11]);
X = [1;1;1;1;2;2;2;2];
Y = {'a';'b';'a';'b';'a';'b';'a';'b'};
Z = [1;2;3;4;5;6;7;8];
TT = timetable(X,Y,Z,'RowTimes',Date)TT=8×3 timetable
Time X Y Z
___________ _ _____ _
10-Jul-2016 1 {'a'} 1
10-Jul-2016 1 {'b'} 2
11-Jul-2016 1 {'a'} 3
11-Jul-2016 1 {'b'} 4
10-Jul-2016 2 {'a'} 5
10-Jul-2016 2 {'b'} 6
11-Jul-2016 2 {'a'} 7
11-Jul-2016 2 {'b'} 8
Переименуйте первую размерность. По умолчанию именем первой размерности расписания является Time. Можно получить доступ к Properties.DimensionNames свойство переименовать размерность.
TT.Properties.DimensionNames{1} = 'Date';
TT.Properties.DimensionNamesans = 1x2 cell
{'Date'} {'Variables'}
Как альтернатива, можно задать времена строки как первый входной параметр к timetable, не задавая 'RowTimes'. timetable имена функций времена строки или первая размерность, после первого входного параметра, как это называет переменные расписания в честь других входных параметров.
TT = timetable(Date,X,Y,Z)
TT=8×3 timetable
Date X Y Z
___________ _ _____ _
10-Jul-2016 1 {'a'} 1
10-Jul-2016 1 {'b'} 2
11-Jul-2016 1 {'a'} 3
11-Jul-2016 1 {'b'} 4
10-Jul-2016 2 {'a'} 5
10-Jul-2016 2 {'b'} 6
11-Jul-2016 2 {'a'} 7
11-Jul-2016 2 {'b'} 8
Сортировка расписания ко временам строки. К виду на временах строки обратитесь к первой размерности расписания по наименованию.
sortrows(TT,'Date')ans=8×3 timetable
Date X Y Z
___________ _ _____ _
10-Jul-2016 1 {'a'} 1
10-Jul-2016 1 {'b'} 2
10-Jul-2016 2 {'a'} 5
10-Jul-2016 2 {'b'} 6
11-Jul-2016 1 {'a'} 3
11-Jul-2016 1 {'b'} 4
11-Jul-2016 2 {'a'} 7
11-Jul-2016 2 {'b'} 8
Сортировка по условию переменных X и Ysortrows виды на X во-первых, затем на Y.
sortrows(TT,{'X' 'Y'})ans=8×3 timetable
Date X Y Z
___________ _ _____ _
10-Jul-2016 1 {'a'} 1
11-Jul-2016 1 {'a'} 3
10-Jul-2016 1 {'b'} 2
11-Jul-2016 1 {'b'} 4
10-Jul-2016 2 {'a'} 5
11-Jul-2016 2 {'a'} 7
10-Jul-2016 2 {'b'} 6
11-Jul-2016 2 {'b'} 8
Сортировка ко временам строки и X вместе.
sortrows(TT,{'Date' 'X'})ans=8×3 timetable
Date X Y Z
___________ _ _____ _
10-Jul-2016 1 {'a'} 1
10-Jul-2016 1 {'b'} 2
10-Jul-2016 2 {'a'} 5
10-Jul-2016 2 {'b'} 6
11-Jul-2016 1 {'a'} 3
11-Jul-2016 1 {'b'} 4
11-Jul-2016 2 {'a'} 7
11-Jul-2016 2 {'b'} 8
Когда вы группируете строки вместе с помощью rowfunvarfunстек, и unstack функции, можно задать метки строки как сгруппированные переменные. Когда вы объединяющие таблицы или расписание вместе с помощью joininnerjoin, и outerjoin функции, можно задать метки строки как ключевые переменные.
Например, можно выполнить внутреннее объединение две таблицы вместе, с помощью имен строки и табличной переменной вместе как ключевые переменные. Внутреннее объединение сохраняет только те строки таблицы, которые соответствуют относительно ключевых переменных.
Составьте две таблицы данных о пациентах. Таблица может иметь имена строки по своему первому измерению, помечая строки, но не требуется, чтобы иметь их. Задайте фамилии пациентов как имена строки таблиц. Добавьте имена пациентов как табличные переменные.
A = table({'Michael';'Louis';'Alice';'Rosemary';'Julie'},[38;43;45;40;49],...
'VariableNames',{'FirstName' 'Age'},...
'RowNames',{'Garcia' 'Johnson' 'Wu' 'Jones' 'Picard'})A=5×2 table
FirstName Age
____________ ___
Garcia {'Michael' } 38
Johnson {'Louis' } 43
Wu {'Alice' } 45
Jones {'Rosemary'} 40
Picard {'Julie' } 49
B = table({'Michael';'Beverly';'Alice'},...
[64;69;67],...
[119;163;133],...
[122 80; 109 77; 117 75],...
'VariableNames',{'FirstName' 'Height' 'Weight' 'BloodPressure'},...
'RowNames',{'Garcia' 'Johnson' 'Wu'})B=3×4 table
FirstName Height Weight BloodPressure
___________ ______ ______ _____________
Garcia {'Michael'} 64 119 122 80
Johnson {'Beverly'} 69 163 109 77
Wu {'Alice' } 67 133 117 75
Если таблица имеет имена строки, то можно индексировать в нее именем строки. Индексация именами строки является удобным способом выбрать строки таблицы. Индексируйте в B фамилией пациента, чтобы получить информацию о пациенте.
B('Garcia',:)ans=1×4 table
FirstName Height Weight BloodPressure
___________ ______ ______ _____________
Garcia {'Michael'} 64 119 122 80
Выполните внутреннее объединение на этих двух таблицах. Обе таблицы используют фамилии пациентов, как строка называет, и содержите имена как табличную переменную. У некоторых пациентов в этих двух таблицах есть соответствие с фамилиями, но различными именами. Чтобы гарантировать что и фамилии и соответствие имен, используйте имена строки и FirstName как ключевые переменные. Чтобы задать имена строки как ключ или сгруппированную переменную, используйте имя первой размерности таблицы. По умолчанию именем первой размерности является 'Row'.
C = innerjoin(A,B,'Keys',{'Row','FirstName'})
C=2×5 table
FirstName Age Height Weight BloodPressure
___________ ___ ______ ______ _____________
Garcia {'Michael'} 38 64 119 122 80
Wu {'Alice' } 45 67 133 117 75
Если вы переименовываете первую размерность таблицы, то можно обратиться к именам строки тем именем вместо того, чтобы использовать 'Row'. Выполните то же внутреннее объединение как выше, но используйте другое имя, чтобы относиться к именам строки.
Покажите имена размерности A путем доступа к его Properties.DimensionNames свойство.
A.Properties.DimensionNames
ans = 1x2 cell
{'Row'} {'Variables'}
Поменяйте имя первой размерности таблицы при помощи ее Properties.DimensionNames свойство. Затем используйте новое имя в качестве ключевой переменной.
A.Properties.DimensionNames{1} = 'LastName';
A.Properties.DimensionNamesans = 1x2 cell
{'LastName'} {'Variables'}
Выполните внутреннее объединение на A и B использование LastName и FirstName как ключевые переменные.
B.Properties.DimensionNames{1} = 'LastName';
D = innerjoin(A,B,'Keys',{'LastName','FirstName'})D=2×5 table
FirstName Age Height Weight BloodPressure
___________ ___ ______ ______ _____________
Garcia {'Michael'} 38 64 119 122 80
Wu {'Alice' } 45 67 133 117 75
Вы не можете сложить или распаковать метки строки с помощью stack и unstack функции. Однако можно использовать метки строки в качестве сгруппированных переменных.
Вы не можете выполнить соединение с помощью joininnerjoin, или outerjoin функции, когда первый аргумент является таблицей и вторым аргументом, являются расписанием. Однако можно выполнить соединение, когда оба аргумента являются таблицами, оба - расписания, или первый аргумент является расписанием, и второй является таблица.
Выход операции соединения может иметь метки строки, если вы задаете метки строки как ключевые переменные. Для получения дополнительной информации о метках строки от операции соединения см. документацию относительно 'Keys''LeftKeys' , и 'RightKeys' аргументы joininnerjoin, и outerjoin функции.
sortrows | join | innerjoin | outerjoin | varfun | rowfun | stack | unstack