Создайте массив набора данных из файла

Примечание

The 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 являются массивами ячеек векторов символов, а другие переменные являются числовыми.

Результирующие массивы набора данных.

Вы можете увидеть тип данных и другую описательную статистику для каждой переменной при помощи 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 получило это имя из первой строки первого столбца в текстовом файле.

Измените первый элемент 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 чтобы соответствовать 'BROWN' с элементами переменной, содержащими фамилии, name.

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 удаляется из массива набора данных.

Возвращает размер массива набора данных.

Массив теперь имеет 13 наблюдений.

size(ds)
ans =

    13     5

Обратите внимание, что строка и столбец, соответствующие именам переменных и наблюдений, соответственно, не включены в размер dataset массив.

Создайте массив набора данных из файла Excel

В этом примере показано, как создать массив набора данных из содержимого Excel® файл электронной таблицы.

Создайте массив набора данных.

Импортируйте данные из первого листа в файл hospitalSmall.xlsx, указывая, что файл данных является электронной таблицей Excel.

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 создает имена переменных с помощью содержимого первой строки в электронной таблице.

Укажите импортируемый лист.

Импортируйте данные из второго листа в новый массив набора данных.

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  

См. также

|

Похожие примеры

Подробнее о