ファイルからデータセット配列を作成
メモ
dataset
データ型は推奨されません。異種混合データを処理するには、代わりに MATLAB® table
データ型を使用します。詳細は、MATLAB table
ドキュメンテーションを参照してください。
タブ区切りのテキスト ファイルからデータセット配列を作成
この例では、タブ区切りのテキスト ファイルからデータセット配列を作成する方法を示します。
既定の設定でデータセット配列を作成します。
既定の設定を使用してテキスト ファイル hospitalSmall.txt
をデータセット配列としてインポートします。
ds = dataset('File',fullfile(matlabroot,'help/toolbox/stats/examples','hospitalSmall.txt'))
ds = name sex age wgt smoke 'SMITH' 'm' 38 176 1 'JOHNSON' 'm' 43 163 0 'WILLIAMS' 'f' 38 131 0 'JONES' 'f' 40 133 0 'BROWN' 'f' 49 119 0 'DAVIS' 'f' 46 142 0 'MILLER' 'f' 33 142 1 'WILSON' 'm' 40 180 0 'MOORE' 'm' 28 183 0 'TAYLOR' 'f' 31 132 0 'ANDERSON' 'f' 45 128 0 'THOMAS' 'f' 42 137 0 'JACKSON' 'm' 25 174 0 'WHITE' 'm' 39 202 1
既定では、dataset
はテキスト ファイルの最初の行を変数名として使用します。最初の行に変数名がない場合は、オプションの名前と値のペアの引数 'ReadVarNames',false
を指定して既定の動作を変更できます。
データセット配列には異種混合の変数が格納されています。変数 id
、name
および sex
は文字ベクトルの cell 配列であり、他の変数は数値です。
データセット配列を要約します。
summary
を使用してデータセット配列を要約すると、各変数のデータ型とその他の記述統計を確認できます。
summary(ds)
name: [14x1 cell array of character vectors] sex: [14x1 cell array of character vectors] age: [14x1 double] min 1st quartile median 3rd quartile max 25 33 39.5 43 49 wgt: [14x1 double] min 1st quartile median 3rd quartile max 119 132 142 176 202 smoke: [14x1 double] min 1st quartile median 3rd quartile max 0 0 0 0 1
観測名をインポートします。
もう一度このテキスト ファイルをインポートします。今回は最初の列に観測名があることを指定します。
ds = dataset('File',fullfile(matlabroot,'help/toolbox/stats/examples','hospitalSmall.txt'),'ReadObsNames',true)
ds = sex age wgt smoke SMITH 'm' 38 176 1 JOHNSON 'm' 43 163 0 WILLIAMS 'f' 38 131 0 JONES 'f' 40 133 0 BROWN 'f' 49 119 0 DAVIS 'f' 46 142 0 MILLER 'f' 33 142 1 WILSON 'm' 40 180 0 MOORE 'm' 28 183 0 TAYLOR 'f' 31 132 0 ANDERSON 'f' 45 128 0 THOMAS 'f' 42 137 0 JACKSON 'm' 25 174 0 WHITE 'm' 39 202 1
テキスト ファイルの最初の列の要素 (姓) が観測名となります。観測名と行名はデータセット配列のプロパティです。ObsNames
プロパティを変更すると、既存のデータセット配列の観測名の追加や削除を随時行うことができます。
データセット配列プロパティを変更します。
既定では、データセット配列の DimNames
プロパティには観測 (行) 次元の記述子として name
が使用されています。dataset
はこの名前をテキスト ファイルの最初の列の 1 行目から取得します。
DimNames
の最初の要素を LastName
に変更します。
ds.Properties.DimNames{1} = 'LastName';
ds.Properties
ans = Description: '' VarDescription: {} Units: {} DimNames: {'LastName' 'Variables'} UserData: [] ObsNames: {14x1 cell} VarNames: {'sex' 'age' 'wgt' 'smoke'}
データセット配列にインデックスを付けます。
観測名を使用してデータセット配列にインデックスを付けることができます。たとえば、BROWN
という姓の患者のデータを抽出します。
ds('BROWN',:)
ans = sex age wgt smoke BROWN 'f' 49 119 0
観測名は一意でなければなりません。
コンマ区切りのテキスト ファイルからデータセット配列を作成
この例では、コンマ区切りのテキスト ファイルからデータセット配列を作成する方法を示します。
データセット配列を作成します。
hospitalSmall.csv
ファイルをデータセット配列としてインポートします。このとき、コンマ区切り形式を指定します。
ds = dataset('File',fullfile(matlabroot,'help/toolbox/stats/examples','hospitalSmall.csv'),'Delimiter',',')
ds = id name sex age wgt smoke 'YPL-320' 'SMITH' 'm' 38 176 1 'GLI-532' 'JOHNSON' 'm' 43 163 0 'PNI-258' 'WILLIAMS' 'f' 38 131 0 'MIJ-579' 'JONES' 'f' 40 133 0 'XLK-030' 'BROWN' 'f' 49 119 0 'TFP-518' 'DAVIS' 'f' 46 142 0 'LPD-746' 'MILLER' 'f' 33 142 1 'ATA-945' 'WILSON' 'm' 40 180 0 'VNL-702' 'MOORE' 'm' 28 183 0 'LQW-768' 'TAYLOR' 'f' 31 132 0 'QFY-472' 'ANDERSON' 'f' 45 128 0 'UJG-627' 'THOMAS' 'f' 42 137 0 'XUE-826' 'JACKSON' 'm' 25 174 0 'TRW-072' 'WHITE' 'm' 39 202 1
既定では、dataset
はテキスト ファイルの最初の行を変数名として使用します。
観測名を追加します。
変数 id
の一意の識別子を観測名として使用します。その後、変数 id
をデータセット配列から削除します。
ds.Properties.ObsNames = ds.id; ds.id = []
ds = name sex age wgt smoke YPL-320 'SMITH' 'm' 38 176 1 GLI-532 'JOHNSON' 'm' 43 163 0 PNI-258 'WILLIAMS' 'f' 38 131 0 MIJ-579 'JONES' 'f' 40 133 0 XLK-030 'BROWN' 'f' 49 119 0 TFP-518 'DAVIS' 'f' 46 142 0 LPD-746 'MILLER' 'f' 33 142 1 ATA-945 'WILSON' 'm' 40 180 0 VNL-702 'MOORE' 'm' 28 183 0 LQW-768 'TAYLOR' 'f' 31 132 0 QFY-472 'ANDERSON' 'f' 45 128 0 UJG-627 'THOMAS' 'f' 42 137 0 XUE-826 'JACKSON' 'm' 25 174 0 TRW-072 'WHITE' 'm' 39 202 1
観測を削除します。
BROWN
という姓の患者をすべて削除します。strcmp
を使用すると、姓が格納されている変数 name
の要素と 'BROWN'
を照合することができます。
toDelete = strcmp(ds.name,'BROWN');
ds(toDelete,:) = []
ds = name sex age wgt smoke YPL-320 'SMITH' 'm' 38 176 1 GLI-532 'JOHNSON' 'm' 43 163 0 PNI-258 'WILLIAMS' 'f' 38 131 0 MIJ-579 'JONES' 'f' 40 133 0 TFP-518 'DAVIS' 'f' 46 142 0 LPD-746 'MILLER' 'f' 33 142 1 ATA-945 'WILSON' 'm' 40 180 0 VNL-702 'MOORE' 'm' 28 183 0 LQW-768 'TAYLOR' 'f' 31 132 0 QFY-472 'ANDERSON' 'f' 45 128 0 UJG-627 'THOMAS' 'f' 42 137 0 XUE-826 'JACKSON' 'm' 25 174 0 TRW-072 'WHITE' 'm' 39 202 1
BROWN
という姓の 1 名の患者がデータセット配列から削除されました。
データセット配列のサイズを返します。
この配列の観測値は 13 件になります。
size(ds)
ans = 13 5
変数名と観測名に一致するそれぞれの行と列は、dataset
配列のサイズには含まれません。
Excel ファイルからデータセット配列を作成
この例では、Excel® スプレッドシート ファイルからデータセット配列を作成する方法を示します。
データセット配列を作成します。
データ ファイルが Excel スプレッドシートであることを指定して、hospitalSmall.xlsx
ファイルの最初のワークシートからデータをインポートします。
ds = dataset('XLSFile',fullfile(matlabroot,'help/toolbox/stats/examples','hospitalSmall.xlsx'))
ds = id name sex age wgt smoke 'YPL-320' 'SMITH' 'm' 38 176 1 'GLI-532' 'JOHNSON' 'm' 43 163 0 'PNI-258' 'WILLIAMS' 'f' 38 131 0 'MIJ-579' 'JONES' 'f' 40 133 0 'XLK-030' 'BROWN' 'f' 49 119 0 'TFP-518' 'DAVIS' 'f' 46 142 0 'LPD-746' 'MILLER' 'f' 33 142 1 'ATA-945' 'WILSON' 'm' 40 180 0 'VNL-702' 'MOORE' 'm' 28 183 0 'LQW-768' 'TAYLOR' 'f' 31 132 0 'QFY-472' 'ANDERSON' 'f' 45 128 0 'UJG-627' 'THOMAS' 'f' 42 137 0 'XUE-826' 'JACKSON' 'm' 25 174 0 'TRW-072' 'WHITE' 'm' 39 202 1
既定では、dataset
はスプレッドシートの 1 行目の内容を使用して変数名を作成します。
インポートするワークシートを指定します。
2 番目のワークシートから新しいデータセット配列にデータをインポートします。
ds2 = dataset('XLSFile',fullfile(matlabroot,'help/toolbox/stats/examples','hospitalSmall.xlsx'),'Sheet',2)
ds2 = id name sex age wgt smoke 'TRW-072' 'WHITE' 'm' 39 202 1 'ELG-976' 'HARRIS' 'f' 36 129 0 'KOQ-996' 'MARTIN' 'm' 48 181 1 'YUZ-646' 'THOMPSON' 'm' 32 191 1 'XBR-291' 'GARCIA' 'f' 27 131 1 'KPW-846' 'MARTINEZ' 'm' 37 179 0 'XBA-581' 'ROBINSON' 'm' 50 172 0 'BKD-785' 'CLARK' 'f' 48 133 0