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