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