メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

convertvars

table または timetable の変数を指定したデータ型に変換

説明

T2 = convertvars(T1,vars,dataType) は、指定された変数を指定されたデータ型に変換します。入力引数 T1 には、table または timetable を指定できます。

dataType はデータ型の名前として指定できますが、関数ハンドルとして指定することもできます。その場合は、vars で指定された変数の変換または変更を行う関数のハンドルです。同様に、varsT1 の変数名または変数の位置を含めることも、あるいは変数を識別する関数のハンドルにすることもできます。

すべて折りたたむ

停電のデータを含むスプレッドシートから table を読み取ります。table には、各停電について地域と原因を示すテキスト変数、停電時刻と復旧時刻を示す datetime 変数、および電力損失と影響を受けた顧客数を示す数値変数があります。最初の 5 行を表示します。

T1 = readtable('outages.csv');
head(T1,5)
       Region           OutageTime        Loss     Customers     RestorationTime            Cause       
    _____________    ________________    ______    __________    ________________    ___________________

    {'SouthWest'}    2002-02-01 12:18    458.98    1.8202e+06    2002-02-07 16:50    {'winter storm'   }
    {'SouthEast'}    2003-01-23 00:49    530.14    2.1204e+05                 NaT    {'winter storm'   }
    {'SouthEast'}    2003-02-07 21:15     289.4    1.4294e+05    2003-02-17 08:14    {'winter storm'   }
    {'West'     }    2004-04-06 05:44    434.81    3.4037e+05    2004-04-06 06:10    {'equipment fault'}
    {'MidWest'  }    2002-03-16 06:18    186.44    2.1275e+05    2002-03-18 23:23    {'severe storm'   }

変数 Region と変数 Cause を categorical 変数に変換します。categorical 値は引用符なしで表示されることがわかります。

T2 = convertvars(T1,{'Region','Cause'},'categorical');
head(T2,5)
     Region         OutageTime        Loss     Customers     RestorationTime          Cause     
    _________    ________________    ______    __________    ________________    _______________

    SouthWest    2002-02-01 12:18    458.98    1.8202e+06    2002-02-07 16:50    winter storm   
    SouthEast    2003-01-23 00:49    530.14    2.1204e+05                 NaT    winter storm   
    SouthEast    2003-02-07 21:15     289.4    1.4294e+05    2003-02-17 08:14    winter storm   
    West         2004-04-06 05:44    434.81    3.4037e+05    2004-04-06 06:10    equipment fault
    MidWest      2002-03-16 06:18    186.44    2.1275e+05    2002-03-18 23:23    severe storm   

異なる機能を提供するデータ型に変数を変換すると便利な場合があります。たとえば、T2.Region は categorical 変数となっているため、関数 pie を使用して、停電に関する地域別の円グラフを作成できます。しかし、T1.Region には categorical データではなくテキストが含まれているため、この変数を pie の入力引数として使用することはできません。

pie(T2.Region)

Figure contains an axes object. The hidden axes object contains 10 objects of type patch, text. These objects represent MidWest, NorthEast, SouthEast, SouthWest, West.

datetime 配列である table 変数を検出します。次に、関数 datetime を関数 convertvars の引数として使用し、タイム ゾーンと表示形式を指定します。

停電のデータを table に読み取り、最初の 3 行を表示します。

T1 = readtable('outages.csv');
head(T1,3)
       Region           OutageTime        Loss     Customers     RestorationTime          Cause      
    _____________    ________________    ______    __________    ________________    ________________

    {'SouthWest'}    2002-02-01 12:18    458.98    1.8202e+06    2002-02-07 16:50    {'winter storm'}
    {'SouthEast'}    2003-01-23 00:49    530.14    2.1204e+05                 NaT    {'winter storm'}
    {'SouthEast'}    2003-02-07 21:15     289.4    1.4294e+05    2003-02-17 08:14    {'winter storm'}

T1 の datetime 配列には、タイム ゾーンが設定されていません。table 変数の名前または位置を指定せずに、関数 isdatetime の "関数ハンドル" を使用して datetime 配列である変数を検出できます (関数ハンドルとは、関数への関連付けを格納する変数です。関数ハンドルを使用して、ある関数を他の関数に渡すことができます。たとえば、@isdatetime を指定して、そのハンドルを convertvars に渡します)。次に、あるタイム ゾーン、および異なる表示形式をもつように、すべての datetime 変数を変換できます。この手法は、すべて同じデータ型をもつ多くの table 変数を変換する場合に有効です。

関数 convertvars を呼び出します。所定の位置にあるタイム ゾーンと形式を変更するには、名前と値のペアの引数 'TimeZone''Format' を指定して関数 datetime を呼び出す "無名関数" を指定します (無名関数はプログラム ファイルに保存されません。これは、簡単な定義のみが必要な関数に便利です。この例では、複数の入力を指定して datetime を呼び出す一方で、convertvars の要求どおりに 1 つの入力のみを受け入れる関数を convertvars に渡すこともできます)。最初の 3 行を表示して、形式の変更されたことを示します。

modifyTimeZoneAndFormat = @(x)(datetime(x,'TimeZone','UTC','Format','MMM dd, yyyy, HH:mm z'));
T2 = convertvars(T1,@isdatetime,modifyTimeZoneAndFormat);
head(T2,3)
       Region              OutageTime            Loss     Customers         RestorationTime             Cause      
    _____________    _______________________    ______    __________    _______________________    ________________

    {'SouthWest'}    Feb 01, 2002, 12:18 UTC    458.98    1.8202e+06    Feb 07, 2002, 16:50 UTC    {'winter storm'}
    {'SouthEast'}    Jan 23, 2003, 00:49 UTC    530.14    2.1204e+05                        NaT    {'winter storm'}
    {'SouthEast'}    Feb 07, 2003, 21:15 UTC     289.4    1.4294e+05    Feb 17, 2003, 08:14 UTC    {'winter storm'}

入力引数

すべて折りたたむ

入力 table。table または timetable として指定します。

T1 が timetable の場合、timetable 変数には行時間が含まれないため、convertvars を使用して行時間を変換することはできません。行時間は、timetable メタデータです。

入力 table または入力 timetable の変数。string 配列、文字ベクトル、文字ベクトルの cell 配列、pattern スカラー、数値配列、logical 配列または関数ハンドルとして指定します。

vars が関数ハンドルの場合、その関数は 1 つの入力引数を受け入れ、データ型を識別し、logical スカラーを返さなければなりません。たとえば、数値変数を検出するには、関数 isnumeric を使用します。

例: T2 = convertvars(T1,'Region','categorical') は、変数 Region の型を変換します。

例: T2 = convertvars(T1,[1,3:6],'string') は、位置で指定された変数を string 配列に変換します。

例: T2 = convertvars(T1,@isnumeric,'int32') は、すべての数値変数を 32 ビット整数に変換します。

変換後の変数のデータ型。文字ベクトル、string スカラーまたは関数ハンドルとして指定します。

dataType が関数ハンドルの場合、その関数は 1 つの入力引数を受け入れ、別のデータ型に変換しなければなりません。たとえば、関数 string は、入力引数を string 配列に変換します。

次の表に、多くの共通なデータ型の名前を示します。

'single'単精度数
'double'倍精度数
'int8'符号付き 8 ビット整数
'int16'符号付き 16 ビット整数
'int32'符号付き 32 ビット整数
'int64'符号付き 64 ビット整数
'uint8'符号なしの 8 ビット整数
'uint16'符号なしの 16 ビット整数
'uint32'符号なしの 32 ビット整数
'uint64'符号なしの 64 ビット整数
'logical'logical 1 (true) または 0 (false)
'string'string 配列
'cell'cell 配列
'cellstr'文字ベクトルの cell 配列
'categorical'categorical 配列
'datetime'datetime 配列
'duration'duration 配列
'calendarDuration'カレンダー期間配列

データ型として 'char' を指定した場合、convertvars は、変数を文字配列に変換します。文字配列である table 変数または timetable 変数は作成しないことをお勧めします。代わりに、変数を string 配列、categorical 配列、または文字ベクトルの cell 配列に変換することを検討してください。

例: T2 = convertvars(T1,'OutageTime','datetime') は、変数 OutageTime の型を変換します。

例: T2 = convertvars(T1,'Region',@categorical) は、関数 categorical の関数ハンドルを使用して変数を変換します。

代替機能

VariableTypes プロパティを使用して、table 変数や timetable 変数を変換することもできます。convertvars とは異なり、このプロパティを使用すると、異なる変数を異なるデータ型に変換できます。 (R2024b 以降)

たとえば、最初の変数が categorical 配列になり、最後の変数が string 配列になるように、table T の変数に新しいデータ型を割り当てることができます。

T = readtable('outages.csv');
head(T,3)
       Region           OutageTime        Loss     Customers     RestorationTime            Cause       
    _____________    ________________    ______    __________    ________________    ___________________

    {'SouthWest'}    2002-02-01 12:18    458.98    1.8202e+06    2002-02-07 16:50    {'winter storm'   }
    {'SouthEast'}    2003-01-23 00:49    530.14    2.1204e+05                 NaT    {'winter storm'   }
    {'SouthEast'}    2003-02-07 21:15     289.4    1.4294e+05    2003-02-17 08:14    {'winter storm'   }
T.Properties.VariableTypes = ["categorical" "datetime" "double" "double" "datetime" "string"];
head(T,3)
     Region         OutageTime        Loss     Customers     RestorationTime         Cause     
    _________    ________________    ______    __________    ________________    ______________

    SouthWest    2002-02-01 12:18    458.98    1.8202e+06    2002-02-07 16:50    "winter storm"
    SouthEast    2003-01-23 00:49    530.14    2.1204e+05                 NaT    "winter storm"
    SouthEast    2003-02-07 21:15     289.4    1.4294e+05    2003-02-17 08:14    "winter storm"

拡張機能

すべて展開する

スレッドベースの環境
MATLAB® の backgroundPool を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool を使用してコードを高速化します。

バージョン履歴

R2018b で導入