convertvars
table または timetable の変数を指定したデータ型に変換
説明
例
table 変数の変換
停電のデータを含むスプレッドシートから table を読み取ります。table には、各停電について地域と原因を示すテキスト変数、停電時刻と復旧時刻を示す datetime 変数、および電力損失と影響を受けた顧客数を示す数値変数があります。最初の 5 行を表示します。
T1 = readtable('outages.csv');
head(T1,5)
Region OutageTime Loss Customers RestorationTime Cause _____________ ____________________ ______ __________ ____________________ ___________________ {'SouthWest'} 01-Feb-2002 12:18:00 458.98 1.8202e+06 07-Feb-2002 16:50:00 {'winter storm' } {'SouthEast'} 23-Jan-2003 00:49:00 530.14 2.1204e+05 NaT {'winter storm' } {'SouthEast'} 07-Feb-2003 21:15:00 289.4 1.4294e+05 17-Feb-2003 08:14:00 {'winter storm' } {'West' } 06-Apr-2004 05:44:00 434.81 3.4037e+05 06-Apr-2004 06:10:00 {'equipment fault'} {'MidWest' } 16-Mar-2002 06:18:00 186.44 2.1275e+05 18-Mar-2002 23:23:00 {'severe storm' }
変数 Region
と変数 Cause
を categorical 変数に変換します。categorical 値は引用符なしで表示されることがわかります。
T2 = convertvars(T1,{'Region','Cause'},'categorical'); head(T2,5)
Region OutageTime Loss Customers RestorationTime Cause _________ ____________________ ______ __________ ____________________ _______________ SouthWest 01-Feb-2002 12:18:00 458.98 1.8202e+06 07-Feb-2002 16:50:00 winter storm SouthEast 23-Jan-2003 00:49:00 530.14 2.1204e+05 NaT winter storm SouthEast 07-Feb-2003 21:15:00 289.4 1.4294e+05 17-Feb-2003 08:14:00 winter storm West 06-Apr-2004 05:44:00 434.81 3.4037e+05 06-Apr-2004 06:10:00 equipment fault MidWest 16-Mar-2002 06:18:00 186.44 2.1275e+05 18-Mar-2002 23:23:00 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)
Region OutageTime Loss Customers RestorationTime Cause _____________ ____________________ ______ __________ ____________________ ________________ {'SouthWest'} 01-Feb-2002 12:18:00 458.98 1.8202e+06 07-Feb-2002 16:50:00 {'winter storm'} {'SouthEast'} 23-Jan-2003 00:49:00 530.14 2.1204e+05 NaT {'winter storm'} {'SouthEast'} 07-Feb-2003 21:15:00 289.4 1.4294e+05 17-Feb-2003 08:14:00 {'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'}
入力引数
T1
— 入力テーブル
table | timetable
入力 table。table または timetable として指定します。
T1
が timetable の場合、timetable 変数には行時間が含まれないため、convertvars
を使用して行時間を変換することはできません。行時間は、timetable メタデータです。
vars
— 入力 table または入力 timetable の変数
string 配列 | 文字ベクトル | 文字ベクトルの cell 配列 | pattern
スカラー | 数値配列 | logical 配列 | 関数ハンドル
入力 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 ビット整数に変換します。
dataType
— 変換後の変数のデータ型
文字ベクトル | string スカラー | 関数ハンドル
変換後の変数のデータ型。文字ベクトル、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
の関数ハンドルを使用して変数を変換します。
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意事項および制限事項:
関数ハンドルはサポートされません。
2 番目および 3 番目の入力引数 (
vars
およびdataType
) は定数でなければなりません。入力引数
vars
はパターン式をサポートしません。dataType
を'cell'
、'cellstr'
、または'char'
として指定することはできません。
詳細については、table のコード生成 (MATLAB Coder)とコード生成における table の制限事項 (MATLAB Coder)を参照してください。
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
バージョン履歴
R2018b で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)