ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

行時間および変数の型による timetable データの選択

timetable は table の一種で、各行に時刻が関連付けられています。timetable に添字を指定してそのデータのサブセットを選択するには、さまざまな方法があります。行時間が特定の時間範囲内にある timetable 行を選択するには、関数 timerange を使用して時間範囲を指定します。timetable は table なので、小かっこや中かっこを使用して行や変数にインデックスを付けることができます。特定の行時間に基づくインデックスを付けたり、関数 withtol を使用して設定した許容誤差内で指定の時刻と一致する行時間をもつ行を選択することもできます。また、table または timetable に添字を付けて、関数 vartype で指定した型に一致するすべての変数を選択することもできます。最後に、Variables プロパティを使用して、データを timetable から行列に抽出します。

ファイルからの timetable の作成

米国における電力会社の停電を表すデータを含むサンプル ファイル outages.csv から、timetable を作成します。関数 readtable を使用して、ファイルから table を読み取ります。T.CauseT.Region を categorical 配列に変換します。次に、関数 table2timetable を使用して、table を timetable に変換します。timetable の最初の 5 行を表示します。TT は、2002 年 2 月から 2014 年 1 月までの停電データを含む timetable です。

T = readtable('outages.csv');
T.Cause = categorical(T.Cause);
T.Region = categorical(T.Region);
TT = table2timetable(T);
TT(1:5,:)
ans=5×6 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   

timetable の概要と行時間へのアクセス

TT の概要を表示します。これは、1468 行と 5 個の変数を含む timetable です。

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  

行時間にアクセスします。行時間は変数に含まれていません。行時間のベクトルは、timetable のプロパティです。ただし、行時間にはドット構文を使用してアクセスできます。TT.OutageTime は、1468 行 1 列の datetime 値のベクトルです。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

時間範囲の添字

特定の時間範囲にある timetable 行をすべて選択するには、関数 timerange を使用して、添字をヘルパーとして作成します。指定する開始時間と終了時間は、timetable 内のいずれかの行時間に一致する必要はありません。

2002 年 1 月から 2003 年 12 月の間に発生した停電を含む行をすべて選択します。TT2 の最初の 5 行を表示します。

TR = timerange('2002-01-01','2003-12-31');
TT2 = TT(TR,:);
TT2(1:5,:)
ans=5×6 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×6 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 行のみの timetable です。

指定時間に基づくインデックス

TT.OutageTime 内の特定の時間を表す datetime 値または文字ベクトルを使用して、TT にインデックスを付けることができます。ただし、その場合には、指定する時間と完全に一致するものが時間ベクトル内になければならず、それらの時間のみが選択されます。TT の 1 行目と 3 行目の時間に基づいて TT にインデックスを付けます。

TT({'2002-02-01 12:18:00','2003-02-07 21:15:00'},:)
ans=2×6 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 値に変換可能な文字ベクトルの cell 配列になければなりません。許容誤差は、secondsminuteshoursdays などの関数を使用して、duration として指定しなければなりません。

rowTimes = {'2002-02-01','2003-02-07'};
S = withtol(rowTimes,days(1));
TT(S,:)
ans=2×6 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

変数の型による添字

特定の型の timetable 変数をすべて選択するには、関数 vartype を使用して、添字をヘルパーとして作成します。変数の型を指定する際、名前や timetable 内の位置を指定する必要はありません。

数値データを含むすべての変数を選択します。TT2 には、変数 LossCustomers のみが含まれます。TT の他の 3 つの変数は、categorical 変数または datetime 変数です。TT2 の最初の 5 行を表示します。

S = vartype('numeric');
TT2 = TT(:,S);
TT2(1:5,:)
ans=5×3 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×3 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 プロパティを使用したデータの抽出

table および timetable のもつ Variables というプロパティを使用して、変数が連結可能である場合は変数から行列にデータを抽出できます。

Variables プロパティを使用して、TT2 から数値データを抽出します。A は、1468 行 2 列の double の行列です。timetable から配列にデータを抽出する場合、行時間は含まれません。

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

参考

| | | | | |

関連するトピック