Main Content

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

ファイルからデータセット配列を作成

メモ

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 を指定して既定の動作を変更できます。

データセット配列には異種混合の変数が格納されています。変数 idname および 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  

参考

|

関連する例

詳細