Таблицы и расписания обеспечивают способы маркировать строки в ваших данных. В таблицах можно маркировать строки именами. В расписаниях необходимо маркировать строки датами, времена или оба. Имена строки являются дополнительными для таблиц, но времена строки требуются для расписаний. Эти метки строки являются частью метаданных в таблице или расписании. В некоторых функциях также можно использовать метки строки в качестве ключевых переменных, группирующих переменных, и так далее, как можно использовать переменные данных в таблице или расписании. Этими функциями является sortrows
, join
, innerjoin
, outerjoin
, varfun
, rowfun
, stack
и 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×4 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.DimensionNames
ans = 1x2 cell array
{'Date'} {'Variables'}
Как альтернатива, можно задать времена строки как первый входной параметр к timetable
, не задавая 'RowTimes'
. Имена функций timetable
времена строки или первая размерность, после первого входного параметра, как это называет переменные расписания в честь других входных параметров.
TT = timetable(Date,X,Y,Z)
TT=8×4 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×4 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
и Y
. виды sortrows
на X
сначала, затем на Y
.
sortrows(TT,{'X' 'Y'})
ans=8×4 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×4 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
Когда вы группируете строки вместе с помощью rowfun
, varfun
, stack
и функций unstack
, можно задать метки строки как группирующие переменные. Когда вы объединяющие таблицы или расписание вместе с помощью join
, innerjoin
и функций 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 array
{'Row'} {'Variables'}
Поменяйте имя первой размерности таблицы при помощи ее свойства Properties.DimensionNames
. Затем используйте новое имя в качестве ключевой переменной.
A.Properties.DimensionNames{1} = 'LastName';
A.Properties.DimensionNames
ans = 1x2 cell array
{'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
Вы не можете сложить или распаковать метки строки с помощью функций unstack
и stack
. Однако можно использовать метки строки в качестве группирующих переменных.
Вы не можете выполнить соединение с помощью join
, innerjoin
или функций outerjoin
, когда первый аргумент является таблицей, и второй аргумент является расписанием. Однако можно выполнить соединение, когда оба аргумента являются таблицами, оба - расписания, или первый аргумент является расписанием, и второй является таблица.
Вывод операции соединения может иметь метки строки, если вы задаете метки строки как ключевые переменные. Для получения дополнительной информации на этикетках строки от операции соединения, см. документацию относительно 'Keys'
, 'LeftKeys'
и аргументов 'RightKeys'
join
, innerjoin
и функций outerjoin
.
innerjoin
| join
| outerjoin
| rowfun
| sortrows
| stack
| unstack
| varfun