Main Content

dataset

(非推奨) 統計データの配列

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

説明

データセット配列は、変数名や観測名などを含む異種混合データやメタデータを集めて 1 つのコンテナー変数にまとめるときに使用します。データセット配列は、一般にテキスト ファイルやスプレッドシートに列として格納される列方向データや表形式データの格納に適しており、型、サイズ、単位などが異なる変数を扱うことができます。

データセット配列には、数値、logical、文字、string、categorical、cell などのさまざまな種類の変数を含めることができます。ただし、データセット配列のクラスは、含んでいる変数のクラスとは異なります。たとえば、double 配列の変数のみを含むデータセット配列でも、それ自体を double 配列であるかのように処理することはできません。ただし、ドット添字を使うと、データセット配列内の変数をワークスペース変数のように処理できます。

データセット配列の添字表現には、通常の数値配列の場合と同様に、かっこを使用できますが、数値型と論理型のインデックスに加えて変数名と観測名もインデックスとして使用できます。

作成

説明

A = dataset(varspec,Name=Value) は、ワークスペース変数入力方法 varspec と 1 つ以上の名前と値の引数を使用してデータセット配列 A を作成します。

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

A = dataset(XLSFile=filename,Name=Value) は、Name=Value で指定された Excel® スプレッドシート内の列方向データからデータセット配列 A を作成します。A 内の変数のデータ型は、スプレッドシートの対応する列にあるデータが列見出し以外はすべて数値である場合、double になります。それ以外の場合、A 内の変数は文字ベクトルの cell 配列になります。

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

入力引数

すべて展開する

ワークスペース変数入力方法。次の 1 つ以上の値として指定します。

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

  • ワークスペース変数 var と変数名 name を含む cell 配列。{var,name} の形式になります。datasetname を変数名として使用します。変数と名前を複数含めるには、{var_1,name_1},{var_2,name_2},...,{var_N,name_N} と指定します。

  • m 列のワークスペース変数 var{var,name_1,...name_m} の形式になります。dataset は名前 name_1,...name_m を変数名として使用します。すべての列の名前を var に含めます。各列は、A 内で別々の変数となります。

これらの入力メソッドを組み合わせて、必要なだけの変数と名前を含めることができます。名前は、有効で一意な MATLAB の識別子でなければなりません。

テキスト ファイル、Excel スプレッドシート、または SAS XPORT 形式ファイルの名前。文字ベクトルの string として指定します。

データ型: string | char

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。

例: patients = dataset(File="hospital.dat",Delimiter=',',ReadObsNames=true)

結果のデータセット内の m 個の変数の名前。string 配列または cell 配列として指定します。名前は、有効で一意な MATLAB の識別子でなければなりません。名前の数は、A 内の変数の数に等しくなければなりません。個々の変数の名前を {var,name} のペアを使用して指定する場合は、VarNames は使用しないでください。ファイルを入力として使用するときに VarNames を指定するには、ReadVarNamesfalse に設定します。

例: {name_1,...,name_m}

データ型: string | cell

結果のデータセット内の n 個の観測値の名前。string 配列または cell 配列として指定します。この観測名は MATLAB 識別子として有効な文字列である必要はありませんが、一意でなければなりません。名前の数は、A 内の観測値 (行) の数に等しくなければなりません。ファイルを入力として使用中に ObsNames を指定するには、ReadObsNamesfalse に設定します。

例: {name_1,...,name_n}

データ型: string | cell

テキスト ファイルのみ

すべて展開する

ファイル内の列を区切る文字。string スカラーまたは文字ベクトルとして指定します。使用可能な文字は次のとおりです。

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

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

  • ',' (コンマ)

  • ';' (セミコロン)

  • '|' (縦線)

データ型: string | char

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

データ型: string | char

ファイルの先頭からスキップする行数。非負の整数として指定します。

データ型: double

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

データ型: string | char | cell

テキスト ファイルまたは Excel スプレッドシート

すべて展開する

ファイルの 1 行目から変数名を読み取るインジケーター。true または false として指定します。ReadVarNames の値が true に設定されている場合、dataset はファイルの 1 行目から読み取ります。それ以外の場合は読み取りません。ReadVarNamestrue の場合、ファイル内または範囲内 (Excel スプレッドシートを使用している場合) の列見出しの変数名を空にしてはなりません。

データ型: logical

ファイルの 1 行目から観測値名を読み取るインジケーター。false または true として指定します。

ReadObsNamesReadVarNames が両方とも true の場合、dataset にはファイル内または範囲内の 1 列目の見出しが A.Properties.DimNames 内の 1 次元の名前として保存されます。

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

データ型: logical

Excel スプレッドシートのみ

すべて展開する

シート番号または引用符で囲まれたシート名。正の数値、文字ベクトル、または string スカラーとして指定します。

データ型: double | char

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

データ型: double

プロパティ

すべて展開する

データセット配列 D にはメタデータ (データに関する情報) を格納するプロパティがあります。プロパティへのアクセスや代入には、P = D.Properties.PropName または D.Properties.PropName = P を使用します。ここで、PropName は次のいずれかです。

データセット配列の説明。文字ベクトルとして格納されます。

データ型: char

データセット配列の 2 つの次元の名前。文字ベクトルの 2 要素 cell 配列として格納されます。

データ型: cell

データセット配列内の観測値の名前。空でない相違する文字ベクトルの cell 配列として格納されます。このプロパティは空になることがあります。空でない場合、文字ベクトルの個数は観測値の個数と等しくなければなりません。

データ型: cell

データセット配列内の変数の単位。文字ベクトルの cell 配列として格納されます。このプロパティは空になることがあります。空でない場合、文字ベクトルの個数は変数の個数と等しくなければなりません。単位が定義されていない変数については、個別の文字ベクトルが空になることがあります。

データ型: cell

データセット配列に関連付けられる追加情報を格納する任意の変数。配列として格納されます。

データ型: double

データセット配列内の変数の説明。文字ベクトルの cell 配列として格納されます。このプロパティは空になることがあります。空でない場合、文字ベクトルの個数は変数の個数と等しくなければなりません。説明が定義されていない変数については、個別の文字ベクトルが空になることがあります。

データ型: cell

データセット配列内の変数の名前。空でない相違する文字ベクトルの cell 配列として格納されます。文字ベクトルの個数は変数の個数と等しくなければなりません。既定の設定は、データ セットの作成に使用される変数の名前の cell 配列です。

データ型: cell

オブジェクト関数

cat(非推奨) データセット配列の連結
cellstr(非推奨) データセット配列から文字ベクトルの cell 配列を作成
dataset2cell(非推奨) データセット配列の cell 配列への変換
dataset2struct(非推奨) データセット配列の構造体への変換
disp(非推奨) データセット配列の表示
double(非推奨) データセット変数を double 配列に変換
end(非推奨) データセット配列のインデックス式における最後のインデックス
export(非推奨) データセット配列のファイルへの書き込み
get(非推奨) データセット配列プロパティにアクセス
horzcat(非推奨) データセット配列の水平連結
intersect(非推奨) データセット配列の観測の共通集合
isempty(非推奨) 空のデータセット配列の場合 true
ismember(非推奨) 集合内のメンバーであるデータセット配列要素
ismissing(非推奨) 欠損値のあるデータセット配列要素の検出
join(非推奨) データ セット配列の観測値のマージ
length(非推奨) データセット配列の長さ
ndims(非推奨) データセット配列の次元数
numel(非推奨) データセット配列の要素数
replaceWithMissing(非推奨) データセット配列への欠損データのインジケーターの挿入
replacedata(非推奨) データセット変数の置き換え
set(非推奨) データ セット配列のプロパティの設定と表示
setdiff(非推奨) データセット配列の観測の差集合
setxor(非推奨) データセット配列の観測の排他的論理和集合
single(非推奨) データセット変数を single 配列に変換
size(非推奨) データセット配列のサイズ
sortrows(非推奨) データセット配列の行の並べ替え
stack(非推奨) 複数変数のデータ セット配列を単一変数に連結
subsasgn(非推奨) データセット配列への添字付き代入
subsref(非推奨) データセット配列の添字付き参照
summary(非推奨) データセット配列のまとめの表示
union(非推奨) データセット配列の観測の和集合
unique(非推奨) データセット配列の一意の観測値
unstack(非推奨) 単一変数からデータ セット配列を取り出して複数変数に入れる
vertcat(非推奨) データセット配列の垂直連結

すべて折りたたむ

ワークスペース変数から観測値の名前を含む dataset 配列を作成します。

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

単一の複数列のワークスペース変数から dataset 配列を作成します。各列の変数名を指定します。

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

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);

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

patients.smoke = nominal(patients.smoke,{'No','Yes'});

喫煙者のより詳細な履歴のプレースホルダーとして新しい水準を smoke に追加します。

patients.smoke = addlevels(patients.smoke,...
                 {'0-5 Years','5-10 Years','LongTerm'});

非喫煙者に喫煙の経験がないという前提で、'No' 水準を再度ラベル付けします。

patients.smoke = setlabels(patients.smoke,'Never','No');

smoke から未分化の 'Yes' 水準を削除します。喫煙者には未定義の水準が付いています。

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

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

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

スプレッドシート ファイルから患者データを読み込みます。

patients = dataset(XLSFile="hospital.xls",ReadObsNames=true);

.mat ファイルから dataset 配列を読み込みます。

load hospital
h1 = hospital(1:10,:);
h2 = hospital(:,{'LastName' 'Age' 'Sex' 'Smoker'});

メタデータにアクセスして変更します。

hospital.Properties.Description;
hospital.Properties.VarNames{4} = 'Wgt';

新しいデータセット変数を既存のものから作成します。

hospital.AtRisk = hospital.Smoker | (hospital.Age > 40);

個々の変数を使用してデータを調べます。

boxplot(hospital.Age,hospital.Sex)

h3 = hospital(hospital.Age<30,...
   {'LastName' 'Age' 'Sex' 'Smoker'});

観測値を 2 つの変数に基づいて並べ替えます。

h4 = sortrows(hospital,{'Sex','Age'});

ヒント

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

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

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

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

    • vertcat メソッド

バージョン履歴

R2006b で導入