Main Content

このページは前リリースの情報です。該当の英語のページはこのリリースで削除されています。

dataset

(非推奨) データセット配列の作成

dataset データ型は推奨されません。異種混合データを処理するには、代わりに MATLAB® table データ型を使用します。詳細は、MATLAB table ドキュメンテーションを参照してください。

構文

A = dataset(varspec,'ParamName',Value)
A = dataset('File',filename,'ParamName',Value)
A = dataset('XLSFile',filename,'ParamName',Value)
A = dataset('XPTFile',xptfilename,'ParamName',Value)

説明

A = dataset(varspec,'ParamName',Value) は、ワークスペース変数入力メソッド varspec および 1 つまたは複数のオプションの名前と値のペア (「パラメーターの名前と値のペア」を参照) を使用して、データセット配列 A を作成します。

入力メソッド varspec には、以下の 1 つ以上のパラメーターを指定することができます。

  • VAR — ワークスペース変数。dataset は、A 内の変数名のワークスペース名を使用します。複数の変数を含めるには、VAR_1,VAR_2,...,VAR_N と指定します。変数には任意のサイズの配列を使用できます。ただし、すべての変数に同じ数の行がなければなりません。VAR は、例外になる場合もあります。この場合、dataset によって、既定の名前が自動的に作成されます。

  • {VAR,name} — ワークスペース変数 VAR および変数名 namedatasetname を変数名として使用します。複数の変数を含めるには、{VAR_1,name_1}, {VAR_2,name_2},..., {VAR_N,name_N} と指定します。

  • {VAR,name_1,...,name_m} — m 列のワークスペース変数 VARdataset は、名前 name_1...name_m を変数名として使用します。VAR の各列に対して名前を含めなければなりません。各列は、A 内で別々の変数となります。

これらの入力メソッドを組み合わせて、必要なだけの変数と名前を含めることができます。名前は、有効で一意な MATLAB の識別子でなければなりません。入力の組み合わせの例は、「例」を参照してください。オプションの名前と値のペアの詳細は、「入力」を参照してください。

数値配列、cell 配列、構造体配列またはテーブルをデータセット配列に変換するには、それぞれ次も使用できます。

メモ

データセット配列には、組み込みデータ型や配列オブジェクトを変数として含めることができます。配列オブジェクトは以下の要素を満たしていなければなりません。

  • MATLAB 標準の小かっこのインデックス。形式は var(i,...) で、i は変数の行に対応する数値または logical ベクトルです。

  • 引数 dim をもつ size メソッド

  • vertcat メソッド

A = dataset('File',filename,'ParamName',Value) は、filename で指定されたテキスト ファイル内の列データからデータセット配列 A を作成します。A 内の変数のデータ型は、ファイルの対応する列にあるデータが列見出し以外はすべて数値である場合、double になります。それ以外の場合、A 内の変数は文字ベクトルの cell 配列になります。dataset は、空のフィールドを NaN (数値変数の場合) または空の文字ベクトル (文字値変数の場合) に変換します。dataset は、ファイル内の意味のない空白を無視します。ファイルとワークスペース変数の両方を入力として指定することはできません。詳細は、「名前と値のペア」を参照してください。

A = dataset('XLSFile',filename,'ParamName',Value) は、filename によって指定された Excel® スプレッドシート内の列データからデータセット配列 A を作成します。A 内の変数のデータ型は、スプレッドシートの対応する列にあるデータが列見出し以外はすべて数値である場合、double になります。それ以外の場合、A 内の変数は文字ベクトルの cell 配列になります。詳細は、「名前と値のペア」を参照してください。

A = dataset('XPTFile',xptfilename,'ParamName',Value) は、SAS® XPORT 形式ファイルからデータセット配列を作成します。XPORT 形式ファイルからの変数名は維持されます。XPORT 形式ファイル内の数値データ型は維持されますが、その他のデータ型はすべて文字ベクトルの cell 配列に変換されます。XPORT 形式では、28 個の欠損データ型が許容されます。dataset では、これらはファイル内で大文字、'.'、または '_' で表されます。dataset は、A 内のすべての欠損データを NaN 値に変換します。詳細は、「名前と値のペア」を参照してください。

パラメーターの名前と値のペア

データセットの作成中に以下の 1 つ以上の名前と値のペアを指定します。

VarNames

指定された変数名を A 内の m 個の変数に付ける string 配列または cell 配列 {name_1,...,name_m}。名前は、有効で一意な MATLAB の識別子でなければなりません。名前の数は、A 内の変数の数に等しくなければなりません。個々の変数の名前を {VAR,name} のペアで指定する場合は、VarNames パラメーターは使用できません。ファイルを入力として使用中に VarNames を指定するには、ReadVarNamesfalse に設定します。

ObsNames

指定された観測値名を A 内の n 個の観測値に付ける string 配列または cell 配列 {name_1,...,name_n}。名前は MATLAB の識別子として有効である必要はありませんが、一意でなければなりません。名前の数は、A 内の観測値 (行) の数に等しくなければなりません。ファイルを入力として使用中に ObsNames を指定するには、ReadObsNamesfalse に設定します。

テキスト ファイルを入力として使用中に使用できる名前と値のペアは次のとおりです。

Delimiter

ファイル内の列を区切る文字を示す文字ベクトルまたは string スカラー。次の値を使用できます。

  • '\t' (タブ。format が指定されていない場合の既定値)

  • ' ' (スペース。format が指定されている場合の既定値)

  • ',' (コンマ)

  • ';' (セミコロン)

  • '|' (縦線)

Format

textscan によって受け入れられる書式指定文字ベクトルまたは string スカラー。datasettextscan を使用してファイルを読み取り、書式指定文字ベクトルまたは string スカラーの変換指定子に従って A 内に変数を作成します。textscan で使用できる名前と値のペアを指定することもできます。大きいファイルでは Format パラメーターを使用すると処理時間が短縮されます。ReadObsNamestrue の場合、ファイル内の最初の列に対する書式指定子を format に含めなければなりません。

HeaderLines

ファイルの先頭からスキップする行数を示す数値。

既定値: 0

TreatAsEmpty

数値列内で空の文字ベクトルとして扱う文字を指定します。値は、文字配列、string 配列、または文字ベクトルの cell 配列です。このパラメーターはファイル内の数値列にのみ適用されます。dataset'-99' のような数値リテラルを受け取りません。

テキスト ファイルまたは Excel スプレッドシートを入力として使用中に使用できる名前と値のペアは次のとおりです。

ReadVarNames

論理値。ファイルの 1 行目から変数名を読み取るかどうかを示し、読み取る場合は true、読み取らない場合は false です。既定の設定は true です。ReadVarNamestrue の場合、ファイル内または範囲内 (Excel スプレッドシートを使用している場合) の列見出しの変数名を空にすることはできません。

ReadObsNames

ファイルまたは範囲 (Excel スプレッドシートを使用している場合) の 1 列目から観測値名を読み取るかどうかを示す論理値。読み取る場合は true、読み取らない場合は false です。既定の設定は false です。ReadObsNamesReadVarNames が両方とも true の場合、dataset にはファイル内または範囲内の 1 列目の見出しが A.Properties.DimNames 内の 1 次元の名前として保存されます。

XPT 形式ファイルから読み取る場合、ReadObsNames パラメーターの名前と値のペアによって、ファイル内の最初の変数を観測名として使用するかどうかが決定されます。論理値を指定します (既定値は false)。最初の変数の内容が観測値名として有効でない場合、dataset は変数をデータセット配列の変数に読み込み、観測値名は設定しません。

テキスト ファイルまたは Excel スプレッドシートを入力として使用中に使用できる名前と値のペアは次のとおりです。

Sheet

シート番号を表す double 型の正のスカラー値、または引用符で囲まれたシート名。

Range

'C1:C2' という形式の文字ベクトルまたは string スカラー。C1C2 は、xlsread の場合と同じように、読み取り対象となる四角形領域の対角位置にあるセルの名前です。既定の設定では、四角形領域はデータを含む右端の列までです。スプレッドシートに、データ列に挟まれた空の列がある場合や図などの表以外の情報がある場合、データのみを含む範囲を指定します。

ワークスペース変数から観測値の名前を含むデータセット配列を以下のように作成します。

load cereal
cereal = dataset(Calories,Protein,Fat,Sodium,Fiber,Carbo,...
   Sugars,'ObsNames',Name)
cereal.Properties.VarDescription = Variables(4:10,2);

複数列ワークスペースの単一の変数から各列の変数名を指定して、データセット配列を以下のように作成します。

load cities
categories = cellstr(categories);
cities = dataset({ratings,categories{:}},...
   'ObsNames',cellstr(names))

テキスト ファイルまたはスプレッドシート ファイルからデータを読み込みます。

patients = dataset('File','hospital.dat',...
   'Delimiter',',','ReadObsNames',true)
patients2 = dataset('XLSFile','hospital.xls',...
   'ReadObsNames',true)
  1. CSV ファイル hospital.dat から患者データを読み込み、この情報を、データの最初の列に観測名 (患者 ID) がある dataset 配列に保存します。

    patients = dataset('file','hospital.dat', ...
                 'format','%s%s%s%f%f%f%f%f%f%f%f%f', ...
                 'Delimiter',',','ReadObsNames',true); 
    

    書式を指定せずにデータを読み込むこともできます。dataset は、ファイルの内容に基づいて、double 配列または文字ベクトルの cell 配列である dataset 変数を自動的に作成します。

    patients = dataset('file','hospital.dat',...
                       'delimiter',',',...
                       'ReadObsNames',true);

  2. {0,1} 値変数 smoke をノミナル変数とし、ラベルを 'No''Yes' に変更します。

    patients.smoke = nominal(patients.smoke,{'No','Yes'});
    
  3. 喫煙者のより詳細な履歴のプレースホルダーとして新しい水準を smoke に追加します。

    patients.smoke = addlevels(patients.smoke,...
                     {'0-5 Years','5-10 Years','LongTerm'});
    
  4. 非喫煙者に喫煙の経験がないという前提で、'No' 水準を再度ラベル付けします。

    patients.smoke = setlabels(patients.smoke,'Never','No');
    
  5. smoke から未分化の 'Yes' 水準を削除します。

    patients.smoke = droplevels(patients.smoke,'Yes');
    

    喫煙者には未定義の水準が付いています。

  6. 観測名ごとに、各喫煙者を新しい水準のいずれかに設定します。

    patients.smoke('YPL-320') = '5-10 Years';

バージョン履歴

R2007a で導入