Примечание
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.Propertiesans =
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 ®.
Создайте массив наборов данных.
Импорт данных из первого листа в файле 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