Выбор Timetable Data by Row Time и Variable Type

Расписание является типом таблицы, которая сопоставляет время с каждой строкой. Вы можете индекс в расписание, чтобы выбрать подмножества его данных различными способами. Чтобы выбрать строки расписания с временами строки, которые находятся в пределах данной области значений времени, укажите диапазон времени с помощью timerange функция. Поскольку расписание является таблицей, можно индексировать на строках и переменных с помощью или сглаживать круглые скобки или фигурные скобки. Можно индексировать на определенных временах строки или выбрать строки с временами строки, которые совпадают с требуемыми временами в допуске, вы устанавливаете использование withtol функция. Вы можете также индекс в таблицу или расписание, чтобы выбрать все переменные, которые совпадают с типом, который вы задаете с vartype функция. Наконец, извлеките данные из расписания в матрицу с помощью Variables свойство.

Создание объекта Timetable из файла

Создайте расписание из файла примера 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

Смотрите также

| | | | | |

Похожие темы