ドキュメンテーション

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

convertvars

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

構文

T2 = convertvars(T1,vars,dataType)

説明

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

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

すべて折りたたむ

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

T1 = readtable('outages.csv');
head(T1,5)
ans=5×6 table
      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)
ans=5×6 table
     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)

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

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

T1 = readtable('outages.csv');
head(T1,3)
ans=3×6 table
      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)
ans=3×6 table
      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 の変数。文字ベクトル、文字ベクトルの cell 配列、string 配列、数値配列、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 の関数ハンドルを使用して変数を変換します。

R2018b で導入