Таблицы и расписания обеспечивают способы пометить строки в ваших данных. В таблицах можно пометить строки именами. В расписаниях необходимо пометить строки датами, времена или оба. Имена строки являются дополнительными для таблиц, но времена строки требуются для расписаний. Эти метки строки являются частью метаданных в таблице или расписании. В некоторых функциях также можно использовать метки строки в качестве ключевых переменных, сгруппированных переменных, и так далее, как можно использовать переменные данных в таблице или расписании. Этими функциями является sortrows
соединение
innerjoin
outerjoin
varfun
rowfun
стек
, и 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
стек
, и 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
Вы не можете сложить или распаковать метки строки с помощью stack
и unstack
функции. Однако можно использовать метки строки в качестве сгруппированных переменных.
Вы не можете выполнить соединение с помощью join
innerjoin
, или outerjoin
функции, когда первый аргумент является таблицей и вторым аргументом, являются расписанием. Однако можно выполнить соединение, когда оба аргумента являются таблицами, оба - расписания, или первый аргумент является расписанием, и второй является таблица.
Выход операции соединения может иметь метки строки, если вы задаете метки строки как ключевые переменные. Для получения дополнительной информации о метках строки от операции соединения см. документацию относительно 'Keys'
'LeftKeys'
, и 'RightKeys'
аргументы join
innerjoin
, и outerjoin
функции.
innerjoin
| join
| outerjoin
| rowfun
| sortrows
| stack
| unstack
| varfun