exponenta event banner

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

Примечание

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  

См. также

|

Связанные примеры

Подробнее