Расписание является типом таблицы, которая сопоставляет время с каждой строкой. Можно преобразовать в нижний индекс в расписание, чтобы выбрать подмножества его данных различными способами. Чтобы выбрать строки расписания с временами строки, которые находятся в пределах данной области значений времени, задайте область значений времени с помощью функции timerange
. Поскольку расписание является таблицей, можно индексировать на строках и переменных с помощью или сглаживать круглые скобки или фигурные скобки. Можно индексировать на определенных временах строки или выбрать строки с временами строки, которые совпадают с требуемыми временами в допуске, вы устанавливаете использование функции withtol
. Можно также преобразовать в нижний индекс в таблицу или расписание, чтобы выбрать все переменные, которые совпадают с типом, который вы задаете с функцией vartype
. Наконец, извлеките данные из расписания в матрицу с помощью свойства Variables
.
Создайте расписание из файла примера outages.csv
, содержа данные, представляющие отключения электричества электроэнергетики в Соединенных Штатах. Считайте таблицу из файла с функцией readtable
. Преобразуйте T.Cause
и T.Region
в категориальные массивы. Затем преобразуйте таблицу в расписание с помощью функции table2timetable
. Отобразите первые пять строк расписания. TT
является расписанием, содержащим данные об отключении электричества с февраля 2002 до января 2014.
T = readtable('outages.csv');
T.Cause = categorical(T.Cause);
T.Region = categorical(T.Region);
TT = table2timetable(T);
TT(1:5,:)
ans=5×6 timetable
OutageTime Region Loss Customers RestorationTime Cause
________________ _________ ______ __________ ________________ _______________
2002-02-01 12:18 SouthWest 458.98 1.8202e+06 2002-02-07 16:50 winter storm
2003-01-23 00:49 SouthEast 530.14 2.1204e+05 NaT winter storm
2003-02-07 21:15 SouthEast 289.4 1.4294e+05 2003-02-17 08:14 winter storm
2004-04-06 05:44 West 434.81 3.4037e+05 2004-04-06 06:10 equipment fault
2002-03-16 06:18 MidWest 186.44 2.1275e+05 2002-03-18 23:23 severe storm
Отобразите сводные данные TT
. Это - расписание, которое содержит 1 468 строк и пять переменных.
summary(TT)
RowTimes: OutageTime: 1468x1 datetime Values: Min 2002-02-01 12:18 Median 2010-03-18 21:05 Max 2014-01-15 02:41 Variables: Region: 1468x1 categorical Values: MidWest 142 NorthEast 557 SouthEast 389 SouthWest 26 West 354 Loss: 1468x1 double Values: Min 0 Median 180.26 Max 23418 NumMissing 604 Customers: 1468x1 double Values: Min 0 Median 75765 Max 5.9689e+06 NumMissing 328 RestorationTime: 1468x1 datetime Values: Min 2002-02-07 16:50 Median 2010-03-31 10:54 Max 2042-09-18 23:31 NumMissing 29 Cause: 1468x1 categorical Values: attack 294 earthquake 2 energy emergency 188 equipment fault 156 fire 25 severe storm 338 thunder storm 201 unknown 24 wind 95 winter storm 145
Доступ ко временам строки. Времена строки не находятся в переменной. Вместо этого вектор времен строки является свойством расписания. Однако можно получить доступ ко временам строки с точечным синтаксисом. TT.OutageTime
1468 1 вектор значений datetime. Отобразите первые пять строк TT.OutageTime
.
TT.OutageTime(1:5)
ans = 5x1 datetime array
2002-02-01 12:18
2003-01-23 00:49
2003-02-07 21:15
2004-04-06 05:44
2002-03-16 06:18
Чтобы выбрать все строки расписания, которые падают в области значений времени, создайте индекс как помощника, с помощью функции timerange
. Запуск и время окончания, которое вы задаете, не должен совпадать ни с одним из времен строки в расписании.
Выберите все строки с отключениями электричества, которые произошли между январем 2002 и декабрем 2003. Отобразите первые пять строк TT2
.
TR = timerange('2002-01-01','2003-12-31'); TT2 = TT(TR,:); TT2(1:5,:)
ans=5×6 timetable
OutageTime Region Loss Customers RestorationTime Cause
________________ _________ ______ __________ ________________ ____________
2002-02-01 12:18 SouthWest 458.98 1.8202e+06 2002-02-07 16:50 winter storm
2003-01-23 00:49 SouthEast 530.14 2.1204e+05 NaT winter storm
2003-02-07 21:15 SouthEast 289.4 1.4294e+05 2003-02-17 08:14 winter storm
2002-03-16 06:18 MidWest 186.44 2.1275e+05 2002-03-18 23:23 severe storm
2003-06-18 02:49 West 0 0 2003-06-18 10:54 attack
Отобразите последние пять строк TT2
.
TT2(end-4:end,:)
ans=5×6 timetable
OutageTime Region Loss Customers RestorationTime Cause
________________ _________ ______ __________ ________________ ________________
2003-09-02 19:46 SouthEast 0 0 2003-09-16 22:25 severe storm
2003-09-15 14:56 MidWest 418.7 61045 2003-09-22 04:21 thunder storm
2003-09-24 22:43 SouthWest 2576.9 9.4873e+05 2003-09-25 14:46 severe storm
2003-09-18 10:40 SouthWest 301.8 2.3973e+05 2003-09-27 08:17 severe storm
2003-10-11 19:36 SouthEast 309.8 93582 2003-10-11 19:49 energy emergency
TT2
является расписанием только с 98 строками, содержа данные об отключении электричества только от 2 002 и 2003.
Можно индексировать в TT
со значениями datetime или векторами символов, представляющими определенные времена в TT.OutageTime
. Но когда вы делаете так, времена, которые вы задаете, должны иметь точные совпадения во временном векторе, и только те времена выбраны. Индексируйте в TT
на временах для первых и третьих строк TT
.
TT({'2002-02-01 12:18:00','2003-02-07 21:15:00'},:)
ans=2×6 timetable
OutageTime Region Loss Customers RestorationTime Cause
________________ _________ ______ __________ ________________ ____________
2002-02-01 12:18 SouthWest 458.98 1.8202e+06 2002-02-07 16:50 winter storm
2003-02-07 21:15 SouthEast 289.4 1.4294e+05 2003-02-17 08:14 winter storm
Задайте допуск при индексации на временах. Можно использовать функцию withtol
, чтобы создать индекс как помощник. С выводом withtol
можно выбрать времена строки, которые соответствуют в заданном допуске.
Индексируйте в TT
в заданные даты. Задайте допуск одного дня, чтобы возвратить строки с временами строки, которые являются в течение одного дня после заданных дат. Времена должны быть в datetime или векторе длительности, или в массиве ячеек из символьных векторов, который может быть преобразован в значения длительности или datetime. Допуск должен быть задан как длительность, с помощью функции, такой как seconds
, minutes
, hours
или days
.
rowTimes = {'2002-02-01','2003-02-07'}; S = withtol(rowTimes,days(1)); TT(S,:)
ans=2×6 timetable
OutageTime Region Loss Customers RestorationTime Cause
________________ _________ ______ __________ ________________ ____________
2002-02-01 12:18 SouthWest 458.98 1.8202e+06 2002-02-07 16:50 winter storm
2003-02-07 21:15 SouthEast 289.4 1.4294e+05 2003-02-17 08:14 winter storm
Чтобы выбрать все переменные расписания, которые имеют данный тип, создайте индекс как помощника, с помощью функции vartype
. Можно задать типы переменных, не имея необходимость задавать их имена или положения в расписании.
Выберите все переменные, которые содержат числовые данные. TT2
содержит только переменные Loss
и Customers
. Другие три переменные TT
являются или категориальными переменными или переменными datetime. Отобразите первые пять строк TT2
.
S = vartype('numeric');
TT2 = TT(:,S);
TT2(1:5,:)
ans=5×3 timetable
OutageTime Loss Customers
________________ ______ __________
2002-02-01 12:18 458.98 1.8202e+06
2003-01-23 00:49 530.14 2.1204e+05
2003-02-07 21:15 289.4 1.4294e+05
2004-04-06 05:44 434.81 3.4037e+05
2002-03-16 06:18 186.44 2.1275e+05
Преобразуйте в нижний индекс и на области значений времени и типом переменной.
TR = timerange('2002-01-01','2003-12-31'); TT2 = TT(TR,S); TT2(1:5,:)
ans=5×3 timetable
OutageTime Loss Customers
________________ ______ __________
2002-02-01 12:18 458.98 1.8202e+06
2003-01-23 00:49 530.14 2.1204e+05
2003-02-07 21:15 289.4 1.4294e+05
2002-03-16 06:18 186.44 2.1275e+05
2003-06-18 02:49 0 0
Таблицы и расписания имеют свойство, Variables
, который можно использовать, чтобы извлечь данные из переменных в матрицу, пока переменные могут быть конкатенированы вместе.
Извлеките числовые данные от TT2
с помощью свойства Variables
. A
1468 2, матрица удваивается. Когда вы извлекаете данные из расписания в массив, времена строки не включены.
A = TT2.Variables; A(1:5,:)
ans = 5×2
106 ×
0.0005 1.8202
0.0005 0.2120
0.0003 0.1429
0.0002 0.2128
0 0
Результат TT2.Variables
совпадает с результатом использования фигурных скобок, чтобы извлечь данные, с помощью синтаксиса TT2{:,:}
.
Можно конкатенировать, переменные в TT2
в массив удваивается. Однако TT
содержит числовой, категориальный, и переменные datetime, которые не могут быть конкатенированы. Свойство Variables
возвращает ошибку, когда переменные не могут быть конкатенированы. Чтобы избежать такой ошибки, можно преобразовать в нижний индекс типом переменной перед использованием свойства Variables
.
Индекс в TT
, чтобы выбрать числовые переменные и извлечь их в матрицу.
A = TT(:,vartype('numeric')).Variables;
A(1:5,:)
ans = 5×2
106 ×
0.0005 1.8202
0.0005 0.2120
0.0003 0.1429
0.0004 0.3404
0.0002 0.2128
retime
| synchronize
| table2timetable
| timerange
| timetable
| vartype
| withtol