Расписание является типом таблицы, которая сопоставляет время с каждой строкой. Можно преобразовать в нижний индекс в расписание, чтобы выбрать подмножества его данных различными способами. Чтобы выбрать строки расписания с временами строки, которые находятся в пределах данной области значений времени, задайте область значений времени с помощью функции 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×5 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×5 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×5 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×5 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×5 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×2 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×2 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
повторная синхронизация | синхронизация | table2timetable | временной диапазон | расписание | vartype | withtol