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