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Имя, и 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