exponenta event banner

набор данных

Класс: набор данных

(Не рекомендуется) Создание массива наборов данных

dataset тип данных не рекомендуется. Для работы с разнородными данными используйте MATLAB ®table вместо этого тип данных. См. MATLAB table для получения дополнительной информации.

Синтаксис

A = dataset(varspec,'ParamName',Value)
A = dataset('File',filename,'ParamName',Value)
A = dataset('XLSFile',filename,'ParamName',Value)
A = dataset('XPTFile',xptfilename,'ParamName',Value)

Описание

A = dataset(varspec,'ParamName',Value) создает массив наборов данных A с использованием метода ввода переменной рабочей области varspec и одну или несколько дополнительных пар "имя/значение" (см. раздел "Пары" Имя/значение параметра ").

Метод ввода varspec может быть одним или несколькими из следующих:

  • VAR - переменная рабочей области. dataset использует имя рабочей области для имени переменной в A. Чтобы включить несколько переменных, укажите VAR_1,VAR_2,...,VAR_N. Переменные могут быть массивами любого размера, но все переменные должны иметь одинаковое количество строк. VAR также может быть выражением. В этом случае dataset автоматически создает имя по умолчанию.

  • {VAR,name} - переменная рабочей области, VAR и имя переменной, name . dataset использование name в качестве имени переменной. Чтобы включить несколько переменных и имен, укажите {VAR_1,name_1}, {VAR_2,name_2},..., {VAR_N,name_N}.

  • {VAR,name_1,...,name_m} - переменная рабочего пространства с m-столбцами, VAR. dataset использует имена name_1, ..., name_m в виде имен переменных. Необходимо включить имя для каждого столбца в VAR. Каждый столбец становится отдельной переменной в A.

Эти методы ввода можно объединить для включения необходимого количества переменных и имен. Имена должны быть допустимыми, уникальными идентификаторами MATLAB. Например, комбинации ввода см. в разделе Примеры. Дополнительные сведения о парах имя/значение см. в разделе Входы.

Чтобы преобразовать числовые массивы, массивы ячеек, массивы структуры или таблицы в массивы наборов данных, можно также использовать (соответственно):

Примечание

Массивы наборов данных могут содержать встроенные типы или объекты массива в качестве переменных. Объекты массива должны реализовывать каждое из следующих действий:

  • Стандартное индексирование формы в скобках MATLAB var(i,...), где i - числовой или логический вектор, соответствующий строкам переменной.

  • A size метод с помощью dim аргумент

  • A vertcat метод

A = dataset('File',filename,'ParamName',Value) создает массив наборов данных A из данных, ориентированных на столбцы, в текстовом файле, указанном filename. Переменные в A относятся к типу double если данные в соответствующем столбце файла, следующие за заголовком столбца, являются полностью числовыми; в противном случае переменные в A - массивы ячеек символьных векторов. dataset преобразует пустые поля в NaN (для числовой переменной) или пустой символьный вектор (для символьной переменной). dataset игнорирует незначительный пробел в файле. В качестве входных данных нельзя указать как переменные файла, так и переменные рабочей области. Дополнительные сведения см. в разделе Пары имен и значений.

A = dataset('XLSFile',filename,'ParamName',Value) создает массив наборов данных A из данных, ориентированных на столбцы, в электронной таблице Excel ®, указанной filename. Переменные в A относятся к типу double если данные в соответствующем столбце электронной таблицы, следующие за заголовком столбца, являются полностью числовыми; в противном случае переменные в A - массивы ячеек символьных векторов. Дополнительные сведения см. в разделе Пары имен и значений.

A = dataset('XPTFile',xptfilename,'ParamName',Value) создает массив наборов данных из файла формата SAS ® XPORT. Имена переменных из файла формата XPORT сохраняются. Числовые типы данных в файле формата XPORT сохраняются, но все остальные типы данных преобразуются в массивы ячеек символьных векторов. Формат XPORT допускает 28 отсутствующих типов данных .dataset представляет их в файле буквой верхнего регистра, '.' или '_'. dataset преобразует все отсутствующие данные в NaN значения в A. Дополнительные сведения см. в разделе Пары имен и значений.

Пары «имя/значение параметра»

При создании набора данных укажите одну или несколько следующих пар имя/значение:

VarNames

Строковый массив или массив ячеек {name_1,...,name_m} присвоение имени m переменные в A с указанными именами переменных. Имена должны быть допустимыми, уникальными идентификаторами MATLAB. Число имен должно равняться числу переменных в A. Вы не можете использовать VarNames параметр, если вы предоставляете имена для отдельных переменных с помощью {VAR,name} пар. Определить VarNames при использовании файла в качестве входных данных установите ReadVarNames кому false.

ObsNames

Строковый массив или массив ячеек {name_1,...,name_n} присвоение имени n наблюдения в A с указанными именами наблюдений. Имена не должны быть допустимыми идентификаторами MATLAB, но должны быть уникальными. Количество имен должно равняться количеству наблюдений (строк) в A. Определить ObsNames при использовании файла в качестве входных данных установите ReadObsNames кому false.

Пары имя/значение, доступные при использовании текстовых файлов в качестве входных данных:

Delimiter

Вектор символов или строковый скаляр, указывающий разделяющие символы столбцы в файле. Значения:

  • '\t' (tab, значение по умолчанию, если нет format указано)

  • ' ' (пробел, значение по умолчанию при format указано)

  • ',' (запятая)

  • ';' (точка с запятой)

  • '|' (бар)

Format

Вектор символов формата или скаляр строки, принятый textscan. dataset читает файл с помощью textscanи создает переменные в A согласно спецификаторам преобразования в символьном векторе формата или скаляре строки. Вы также можете указать любые пары имя/значение, принятые textscan. Использование Format значительно быстрее для больших файлов. Если ReadObsNames является true, то format должен содержать спецификатор формата для первого столбца файла.

HeaderLines

Числовое значение, указывающее количество пропускаемых строк в начале файла.

По умолчанию: 0

TreatAsEmpty

Указывает символы, обрабатываемые как пустой символьный вектор в числовом столбце. Значения могут быть символьным массивом, строковым массивом или массивом ячеек символьных векторов. Параметр применяется только к числовым столбцам в файле; dataset не принимает числовые литералы, такие как '-99'.

Пары имя/значение, доступные при использовании текстовых файлов или электронных таблиц Excel в качестве входных данных:

ReadVarNames

Логическое значение, указывающее, следует ли (true) или нет (false) для чтения имен переменных из первой строки файла. Значение по умолчанию: true. Если ReadVarNames является trueимена переменных в заголовках столбцов файла или диапазона (если используется электронная таблица Excel) не могут быть пустыми.

ReadObsNames

Логическое значение, указывающее, следует ли (true) или нет (false) для чтения имен наблюдений из первого столбца файла или диапазона (если используется электронная таблица Excel). Значение по умолчанию: false. Если ReadObsNames и ReadVarNames являются оба true, dataset сохраняет заголовок первого столбца в файле или диапазоне в качестве имени первого измерения в A.Properties.DimNames.

При чтении из XPT файл форматирования, ReadObsNames пара «имя/значение параметра» определяет, следует ли пытаться использовать первую переменную в файле в качестве имен наблюдений. Укажите как логическое значение (по умолчанию false). Если содержимое первой переменной не является допустимым именем наблюдения, то dataset считывает переменную в переменную массива набора данных и не задает имена наблюдений.

Пары имя/значение, доступные при использовании электронных таблиц Excel в качестве входных данных:

Sheet

Положительное скалярное значение типа double с указанием номера листа или имени листа в кавычках.

Range

Вектор символов или строковый скаляр формы 'C1:C2' где C1 и C2 являются названиями ячеек в противоположных углах прямоугольной области, подлежащей прочтению, как для xlsread. По умолчанию прямоугольная область распространяется на самый правый столбец, содержащий данные. Если электронная таблица содержит пустые столбцы между столбцами данных или содержит фигуры или другую нетаблическую информацию, укажите диапазон, содержащий только данные.

Примеры

Создайте массив наборов данных из переменных рабочей области, включая имена наблюдений:

load cereal
cereal = dataset(Calories,Protein,Fat,Sodium,Fiber,Carbo,...
   Sugars,'ObsNames',Name)
cereal.Properties.VarDescription = Variables(4:10,2);

Создайте массив наборов данных из одной многоколонной переменной рабочей области, обозначающей имена переменных для каждого столбца:

load cities
categories = cellstr(categories);
cities = dataset({ratings,categories{:}},...
   'ObsNames',cellstr(names))

Загрузка данных из текстового файла или файла электронной таблицы

patients = dataset('File','hospital.dat',...
   'Delimiter',',','ReadObsNames',true)
patients2 = dataset('XLSFile','hospital.xls',...
   'ReadObsNames',true)
  1. Загрузка данных пациента из CSV-файла hospital.dat и сохранить информацию в dataset массив с именами наблюдений, указанными первым столбцом в данных (идентификация пациента):

    patients = dataset('file','hospital.dat', ...
                 'format','%s%s%s%f%f%f%f%f%f%f%f%f', ...
                 'Delimiter',',','ReadObsNames',true); 
    

    Можно также загрузить данные без указания формата. dataset автоматически создаст dataset переменные, которые являются double массивы или массивы ячеек символьных векторов, в зависимости от содержимого файла:

    patients = dataset('file','hospital.dat',...
                       'delimiter',',',...
                       'ReadObsNames',true);

  2. Создание переменной с {0,1} -значениямиsmoke номинальный и измените метки на 'No' и 'Yes':

    patients.smoke = nominal(patients.smoke,{'No','Yes'});
    
  3. Добавить новые уровни в smoke в качестве местозаполнителей для более подробной истории курильщиков:

    patients.smoke = addlevels(patients.smoke,...
                     {'0-5 Years','5-10 Years','LongTerm'});
    
  4. Предполагая, что некурящие никогда не курили, повторно маркируйте 'No' уровень:

    patients.smoke = setlabels(patients.smoke,'Never','No');
    
  5. Удалить недифференцированную 'Yes' уровень от smoke:

    patients.smoke = droplevels(patients.smoke,'Yes');
    
    Warning: OLDLEVELS contains categorical levels that 
    were present in A, caused some array elements to have 
    undefined levels.

    Обратите внимание, что курильщики теперь имеют неопределенный уровень.

  6. Установите для каждого курильщика один из новых уровней по имени наблюдения:

    patients.smoke('YPL-320') = '5-10 Years';
Представлен в R2007a