Выбор 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 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

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

| | | | | |

Похожие темы

Была ли эта тема полезной?