Расписание является типом таблицы, которая сопоставляет время с каждой строкой. Вы можете индекс в расписание, чтобы выбрать подмножества его данных различными способами. Чтобы выбрать строки расписания с временами строки, которые находятся в пределах данной области значений времени, укажите диапазон времени с помощью 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
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минутычасы, или 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 в массив типа double. Однако 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