ドキュメンテーション センター

  • 評価版
  • 製品アップデート

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

dataset

クラス: dataset

データセット配列の作成

構文

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® 識別子として有効な一意の文字列でなければなりません。入力の組み合わせの例は、「例」を参照してください。オプションの名前と値のペアの詳細は、「入力」を参照してください。

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

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

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

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

    • vertcat メソッド

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

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

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

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

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

'VarNames'

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

'ObsNames'

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

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

'Delimiter'

ファイル内の列を区切る文字を示す文字列。次の値を使用できます。

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

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

  • ',' (コンマ)

  • ';' (セミコロン)

  • '|' (縦線)

'Format'

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

'HeaderLines'

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

既定値: 0

'TreatAsEmpty'

数値列内で空の文字列として扱う文字列を指定します。値は、文字列または文字列のセル配列です。このパラメーターはファイル内の数値列にのみ適用されます。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' 形式の文字列。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 配列か文字列のセル配列である 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');
    
    Warning: OLDLEVELS contains categorical levels that 
    were present in A, caused some array elements to have 
    undefined levels.

    喫煙者には未定義のレベルが付いています。

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

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

参考

| | | | |

関連する例

詳細

この情報は役に立ちましたか?