이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

행 시간값과 변수 유형을 기준으로 타임테이블 데이터 선택하기

타임테이블은 각 행에 시간값을 연결하는 테이블의 한 유형입니다. 타임테이블에 첨자를 사용하면 여러 가지 방법으로 해당 데이터의 일부를 선택할 수 있습니다. 지정된 시간 범위에 속하는 행 시간값이 포함된 타임테이블 행을 선택하려면 timerange 함수를 사용하여 시간 범위를 지정하십시오. 타임테이블은 테이블이므로 괄호나 중괄호를 사용하여 행과 변수에 대해 인덱싱할 수 있습니다. 특정 행 시간값에 대해 인덱싱하거나, withtol 함수를 사용하여 설정한 허용오차 내에서 지정된 시간과 일치하는 행 시간값이 포함된 행을 선택할 수 있습니다. 또한 테이블이나 타임테이블에 첨자를 사용하여, vartype 함수로 지정한 유형과 일치하는 모든 변수를 선택할 수도 있습니다. 마지막으로 Variables 속성을 사용하여 타임테이블에서 행렬로 데이터를 추출합니다.

파일에서 타임테이블 만들기

미국 내의 정전 기록을 나타내는 데이터가 들어 있는 샘플 파일 outages.csv에서 타임테이블을 만듭니다. readtable 함수를 사용하여 파일에서 테이블을 읽습니다. T.CauseT.Region을 categorical형 배열로 변환합니다. 그런 다음, table2timetable 함수를 사용하여 테이블을 타임테이블로 변환합니다. 타임테이블의 처음 5개 행을 표시합니다. TT는 2002년 2월부터 2014년 1월까지의 정전 데이터가 포함된 타임테이블입니다.

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의 요약을 표시합니다. 이 타임테이블은 1468개 행과 5개 변수로 구성되었습니다.

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은 datetime형 값으로 구성된 1468x1 벡터입니다. TT.OutageTime의 처음 5개 행을 표시합니다.

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년 1월에서 2003년 12월 사이에 발생한 정전 기록이 포함된 모든 행을 선택합니다. TT2의 처음 5개 행을 표시합니다.

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의 마지막 5개 행을 표시합니다.

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는 2002년과 2003년의 정전 데이터만을 포함하는 98개 행을 갖는 타임테이블입니다.

지정된 시간값에 대해 인덱싱하기

TT.OutageTime의 특정 시간을 나타내는 datetime형 값이나 문자형 벡터를 사용하여 TT의 요소를 참조할 수 있습니다. 그러나 그렇게 하면 사용자가 지정한 시간의 시간 벡터에 정확하게 일치하는 항목이 있어야 하며, 또 그런 시간값만이 선택됩니다. 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의 요소를 참조합니다. 허용오차를 1일로 지정하여 지정된 날짜의 1일 이내에 있는 행 시간값이 포함된 행을 반환합니다. 시간값은 datetime형 벡터 또는 duration형 벡터이거나, datetime형 값 또는 duration형 값으로 변환할 수 있는 문자형 벡터로 구성된 셀형 배열이어야 합니다. 허용오차는 seconds, minutes, hours, days와 같은 함수를 사용하여 duration형으로 지정해야 합니다.

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에는 변수 LossCustomers만 포함됩니다. TT의 나머지 세 변수는 categorical형 변수이거나 datetime형 변수입니다. TT2의 처음 5개 행을 표시합니다.

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 속성이 있습니다. 이 속성은 변수가 결합될 수 있는 한, 변수에서 행렬로 데이터를 추출하는 데 사용할 수 있습니다.

Variables 속성을 사용하여 TT2에서 숫자형 데이터를 추출합니다. A는 double형으로 구성된 1468x2 행렬입니다. 타임테이블에서 배열로 데이터를 추출할 때 행 시간값은 포함되지 않습니다.

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에는 결합할 수 없는 숫자형 변수, categorical형 변수, 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

참고 항목

| | | | | |

관련 항목