Примечание
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.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