fixedWidthImportOptions

Объект настроек импорта для текстовых файлов фиксированной ширины

Описание

A FixedWidthImportOptions позволяет вам задать, как MATLAB® импортирует табличные данные фиксированной ширины из текстовых файлов. Объект содержит свойства, которые управляют процессом импорта данных, включая обработку ошибок и недостающих данных.

Создание

Можно создать FixedWidthImportOptions объект, использующий либо fixedWidthImportOptions функцию (описанную здесь) или detectImportOptions функция:

  • Использование fixedWidthImportOptions для определения свойств импорта на основе ваших требований к импорту.

  • Использование detectImportOptions обнаружение и заполнение свойств импорта на основе содержимого текстового файла фиксированной ширины, заданного в filename.

    opts = detectImportOptions(filename)

Описание

пример

opts = fixedWidthImportOptions создает FixedWidthImportOptions объект с одной переменной.

пример

opts = fixedWidthImportOptions('NumVariables',numVars) создает объект с количеством переменных, заданным в numVars.

пример

opts = fixedWidthImportOptions(___,Name,Value) задает дополнительные свойства для FixedWidthImportOptions объект с использованием одного или нескольких аргументов пары "имя-значение".

Входные параметры

расширить все

Количество переменных, заданное как положительное скалярное целое число.

Свойства

расширить все

Свойства переменной

Имена переменных, заданные как массив ячеек из векторов символов или строковых массивов. The VariableNames свойство содержит имена, используемые при импорте переменных.

Если данные содержат N переменные, но имена переменных не заданы, затем VariableNames свойство содержит {'Var1','Var2',...,'VarN'}.

Чтобы поддержать недопустимые идентификаторы MATLAB в качестве имен переменных, таких как имена переменных, содержащие пространства и символы, отличные от ASCII, задайте значение VariableNamingRule на 'preserve'.

Пример: opts.VariableNames возвращает текущие (обнаруженные) имена переменных.

Пример: opts.VariableNames(3) = {'Height'} изменяет имя третьей переменной на Height.

Типы данных: char | string | cell

Флаг для сохранения имен переменных, заданный как разделенная разделенными запятой парами, состоящая из VariableNamingRule и любой из них 'modify' или 'preserve'.

  • 'modify' - Преобразуйте недопустимые имена переменных (как определено isvarname function) для действительных идентификаторов MATLAB.

  • 'preserve' - Сохраните имена переменных, которые не являются допустимыми идентификаторами MATLAB, такими как имена переменных, которые включают пространства и символы, отличные от ASCII.

Начиная с R2019b, имена переменных и имена строк могут включать любые символы, включая пространства и символы, отличные от ASCII. Кроме того, они могут начинаться с любых символов, а не только букв. Переменная и имена строк не должны быть допустимыми идентификаторами MATLAB (как определяется isvarname функция). Чтобы сохранить эти имена переменных и имена строк, задайте значение VariableNamingRule на 'preserve'.

Типы данных: char | string

Ширина поля переменных в текстовом файле фиксированной ширины, заданная как вектор положительных целочисленных значений. Каждое положительное целое число в векторе соответствует количеству символов в поле, которое составляет переменную. The VariableWidths свойство содержит запись, соответствующую каждой переменной, заданной в VariableNames свойство.

Тип данных переменной, заданный как массив ячеек из векторов символов или строковые массивы, содержащий набор допустимых имен типов данных. The VariableTypes свойство определяет типы данных, которые будут использоваться при импорте переменных.

Как обновить VariableTypes свойство, используйте setvartype функция.

Пример: opts.VariableTypes возвращает текущие типы данных переменных.

Пример: opts = setvartype(opts,'Height',{'double'}) изменяет тип данных переменной Height на double.

Подмножество переменных для импорта, заданное как вектор символов, строковый скаляр, массив ячеек векторов символов, строковые массивы или массив числовых индексов.

SelectedVariableNames должен быть подмножеством имен, содержащихся в VariableNames свойство. По умолчанию SelectedVariableNames содержит все имена переменных из VariableNames свойство, что означает, что все переменные импортируются.

Используйте SelectedVariableNames свойство для импорта только интересующих переменных. Задайте подмножество переменных, используя SelectedVariableNames свойство и использование readtable для импорта только этого подмножества.

Чтобы поддержать недопустимые идентификаторы MATLAB в качестве имен переменных, таких как имена переменных, содержащие пространства и символы, отличные от ASCII, задайте значение VariableNamingRule на 'preserve'.

Пример: opts.SelectedVariableNames = {'Height','LastName'} выбирает только две переменные, Height и LastName, для операции импорта.

Пример: opts.SelectedVariableNames = [1 5] выбирает только две переменные, первую и пятую переменные, для операции импорта.

Пример: T = readtable(filename,opts) возвращает таблицу, содержащую только переменные, указанные в SelectedVariableNames свойство opts объект.

Типы данных: uint16 | uint32 | uint64 | char | string | cell

Введите конкретные настройки импорта переменных, возвращенные как массив объектов настроек импорта переменных. Массив содержит объект, соответствующий каждой переменной, заданной в VariableNames свойство. Каждый объект в массиве содержит свойства, поддерживающие импорт данных с определенным типом данных.

Опции переменной поддерживают следующие типы данных: число, текст, logical, datetime, или categorical.

Чтобы запросить текущие (или обнаруженные) опции для переменной, используйте getvaropts функция.

Чтобы задать и настроить опции для переменной, используйте setvaropts функция.

Пример: opts.VariableOptions возвращает набор VariableImportOptions объекты, по одному, соответствующий каждой переменной в данных.

Пример: getvaropts(opts,'Height') возвращает VariableImportOptions объект для Height переменная.

Пример: opts = setvaropts(opts,'Height','FillValue',0) устанавливает FillValue свойство для переменной Height на 0.

Свойства местоположения

Расположение данных, заданное в виде положительного скалярного целого числа или N-по -2 массив положительных скалярных целых чисел. Задайте DataLines использование одной из этих форм.

Задайте как

Описание

n

Укажите первую линию, содержащую данные. Определение значения с помощью n устанавливает значение DataLines свойство к [n inf]. Функция импорта считывает все строки между n и конец файла.

n должно быть положительным целым числом, больше нуля.

[n1 n2]

Укажите область значений линий, содержащий данные. n1 - первая линия, содержащая данные и n2 - последняя линия, содержащая данные.

Значения в массиве [n1 n2] должны быть ненулевыми положительными целыми числами и n2 должно быть больше n1.

[n1 n2; n3 n4;...]

Задайте несколько области значений линий для чтения с N-по -2 массив, содержащий N различные области значений линий.

Допустимый массив из нескольких областей значений линий должен:

  • Задайте области значений линий в порядке увеличения, то есть первая область значений линий, заданный в массиве, появится в файле перед другими областями значений линий.

  • Содержат только ненепересекающиеся области значений линий.

При определении нескольких областей значений линий используйте Inf только при указании конца последней области значений линий в массиве. Для примера, [1 3; 5 6; 8 Inf].

Пример: opts.DataLines = 5 устанавливает DataLines свойство значению [5 inf]. Считайте все строки данных, начиная с 5 строк в конец файла.

Пример: opts.DataLines = [2 6] устанавливает свойство для чтения линий 2 через 6.

Пример: opts.DataLines = [1 3; 5 6; 8 inf] устанавливает свойство для чтения строк 1, 2, 3, 5, 6и все строки между 8и конец файла.

Типы данных: single | double | uint8 | uint16 | uint32 | uint64

Расположение имен строк, заданное как положительное скалярное целое число. The RowNamesColumn свойство задает местоположение столбца, содержащего имена строк.

Если RowNamesColumn задается как 0, тогда не импортируйте имена строк. В противном случае импортируйте имена строк из указанного столбца.

Пример: opts.RowNamesColumn = 2;

Типы данных: single | double | uint8 | uint16 | uint32 | uint64

Расположение имен переменных, заданное как положительное скалярное целое число. The VariableNamesLine свойство задает номер линии, где расположены имена переменных.

Если VariableNamesLine задается как 0, тогда не импортируйте имена переменных. В противном случае импортируйте имена переменных из указанной линии.

Пример: opts.VariableNamesLine = 6;

Типы данных: single | double | uint8 | uint16 | uint32 | uint64

Расположение описания переменной в виде положительного скалярного целого числа. The VariableDescriptionsLine свойство задает номер линии, в которой расположены описания переменных.

Если VariableDescriptionsLine задается как 0, тогда не импортируйте описания переменных. В противном случае импортируйте описание переменной из указанной линии.

Пример: opts.VariableDescriptionsLine = 7;

Типы данных: single | double | uint8 | uint16 | uint32 | uint64

Расположение переменных модулей в виде положительного скалярного целого числа. The VariableUnitsLine свойство задает номер линии, в которой расположены переменные модули.

Если VariableUnitsLine задается как 0, тогда не импортируйте модули. В противном случае импортируйте модули переменной из заданной линии.

Пример: opts.VariableUnitsLine = 8;

Типы данных: single | double | uint8 | uint16 | uint32 | uint64

Свойства разграниченного текста

Символы для обработки как пустое пространство, заданные как вектор символов или строковый скаляр, содержащий один или несколько символов.

Пример: 'Whitespace',' _'

Пример: 'Whitespace','?!.,'

Символы в конце строки, заданные как вектор символов, строковый скаляр, массив ячеек из векторов символов или строковые массивы.

Пример: 'LineEnding','\n'

Пример: 'LineEnding','\r\n'

Пример: 'LineEnding',{'\b',':'}

Типы данных: char | string | cell

Стиль комментариев, заданный как вектор символов, строковый скаляр, массив ячеек из векторов символов или строковые массивы.

Для примера, чтобы игнорировать текст, следующий за процентным знаком на той же линии, задайте CommentStyle как '%'.

Пример: 'CommentStyle',{'/*'}

Типы данных: char | string | cell

Схема кодирования символов, сопоставленная с файлом, задается как разделенная разделенными запятой парами, состоящая из 'Encoding' и 'system' или стандартное имя схемы кодирования символов.

Когда вы не задаете никакой кодировки, функция использует автоматическое обнаружение набора символов, чтобы определить кодировку при чтении файла.

Пример: 'Encoding','system' использует системную кодировку по умолчанию.

Типы данных: char | string

Правила замены

Процедура обработки частичных полей в данных в виде одного из значений в этой таблице.

Правило частичного поляПоведение
'keep'

Сохраните данные частичного поля и преобразуйте текст в соответствующий тип данных.

В некоторых случаях, когда функция импорта не может интерпретировать частичные данные, может возникнуть ошибка преобразования.

'fill'

Замените отсутствующие данные на содержимое FillValue свойство.

The FillValue свойство задано в VariableImportOptions объект импортируемой переменной. Для получения дополнительной информации о доступе к FillValue свойство, см. getvaropts.

'omitrow'Опускать строки, которые содержат частичные данные.
'omitvar'Опускайте переменные, которые содержат частичные данные.
'wrap'Начните чтение следующей линии символов.
'error'Отображение сообщения об ошибке и прекращение операции импорта.

Пример: opts.PartialFieldRule = 'keep';

Типы данных: char | string

Процедура обработки пустых линий в данных, заданная как 'skip', 'read', или 'error'. Функция импорта интерпретирует пустое пространство как пустое.

Правило пустой линииПоведение
'skip'Пропустите пустые линии.
'read'Импортируйте пустые линии. Функция импорта анализирует пустую линию, используя значения, указанные в VariableWidths, VariableOptions, MissingRule, и другие соответствующие свойства, такие как Whitespace.
'error'Отображение сообщения об ошибке и прекращение операции импорта.

Пример: opts.EmptyLineRule = 'skip';

Типы данных: char | string

Процедура управления отсутствующими данными, заданная в качестве одного из значений в этой таблице.

Отсутствующее правилоПоведение
'fill'

Замените отсутствующие данные на содержимое FillValue свойство.

The FillValue свойство задано в VariableImportOptions объект импортируемой переменной. Для получения дополнительной информации о доступе к FillValue свойство, см. getvaropts.

'error'Остановите импорт и отобразите сообщение об ошибке, показывающее отсутствующие запись и поле.
'omitrow'Опускать строки, которые содержат отсутствующие данные.
'omitvar'Опускайте переменные, которые содержат отсутствующие данные.

Пример: opts.MissingRule = 'omitrow';

Типы данных: char | string

Процедура обработки ошибок импорта, заданная как одно из значений в этой таблице.

Правило импорта ошибокПоведение
'fill'

Замените данные, в которых произошла ошибка, содержимым FillValue свойство.

The FillValue свойство задано в VariableImportOptions объект импортируемой переменной. Для получения дополнительной информации о доступе к FillValue свойство, см. getvaropts.

'error'Остановите импорт и отобразите сообщение об ошибке, показывающее запись и поле, вызывающие ошибку.
'omitrow'Опускать строки, в которых происходят ошибки.
'omitvar'Опускайте переменные, где происходят ошибки.

Пример: opts.ImportErrorRule = 'omitvar';

Типы данных: char | string

Процедура обработки дополнительных столбцов данных в виде одного из значений в этой таблице.

Правило дополнительных столбцовПоведение
'addvars'

Чтобы импортировать дополнительные столбцы, создайте новые переменные. Если есть N дополнительные столбцы, затем импортируйте новые переменные следующим 'ExtraVar1', 'ExtraVar2',..., 'ExtraVarN'.

ПРИМЕЧАНИЕ. Дополнительные столбцы импортируются как текст с типом данных char.

'ignore'Игнорируйте дополнительные столбцы данных.
'wrap'Перенос дополнительных столбцов данных в новые записи. Это действие не изменяет количество переменных.
'error'Отображение сообщения об ошибке и прекращение операции импорта.

Типы данных: char | string

Функции объекта

getvaroptsПолучите переменные настройки импорта
setvaroptsУстановите настройки импорта переменных
setvartypeУстановите типы данных переменных
previewПредварительный просмотр восьми строк из файла с помощью настроек импорта

Примеры

свернуть все

Исследуйте форматированный текстовый файл фиксированной ширины, инициализируйте объект настроек импорта и используйте объект для импорта таблицы из текстового файла.

Загрузка и предварительный просмотр текстового файла фиксированной ширины

Загрузите файл fixed_width_patients_subset_perfect.txt и предварительный просмотр его содержимого в текстовом редакторе. Снимок экрана показывает, что файл содержит форматированные данные фиксированной ширины.

filename = 'fixed_width_patients_subset_perfect.txt';

Исследуйте и извлеките свойства файла с фиксированной шириной

Текстовый файл фиксированной ширины имеет табличные данные, организованные начальным местоположением, количеством переменных, именами переменных и переменными ширинами. Соберите эти свойства и требуемый тип данных для переменных.

DataStartLine = 2;
NumVariables = 7;
VariableNames  = {'LastName','Gender','Age','Location','Height',...
                                                      'Weight','Smoker'};
VariableWidths = [ 10,     7,     4,    26,     7, ...
                                                         7,     7 ] ;                                                  
DataType       = {'char','categorical','double','char','double',...
                                                     'double','logical'};

Инициализация и настройка FixedWidthImportOptions Объект

Инициализируйте FixedWidthImportOptions и сконфигурируйте его свойства так, чтобы они совпадали со свойствами данных в fixed_width_patients_subset_perfect.txt.

opts = fixedWidthImportOptions('NumVariables',NumVariables,...
                               'DataLines',DataStartLine,...
                               'VariableNames',VariableNames,...
                               'VariableWidths',VariableWidths,...
                               'VariableTypes',DataType);

Таблица импорта

Использование readtable с FixedWidthImportOptions объект для импорта таблицы.

T = readtable(filename,opts)
T=10×7 table
      LastName      Gender    Age              Location               Height    Weight    Smoker
    ____________    ______    ___    _____________________________    ______    ______    ______

    {'Smith'   }    Male      38     {'County General Hospital'  }      71       176      true  
    {'Johnson' }    Male      43     {'VA Hospital'              }      69       163      false 
    {'Williams'}    Female    38     {'St. Mary's Medical Center'}      64       131      false 
    {'Brown'   }    Female    49     {'County General Hospital'  }      64       119      false 
    {'Miller'  }    Female    33     {'VA Hospital'              }      64       142      true  
    {'Wilson'  }    Male      40     {'VA Hospital'              }      68       180      false 
    {'Taylor'  }    Female    31     {'County General Hospital'  }      66       132      false 
    {'Thomas'  }    Female    42     {'St. Mary's Medical Center'}      66       137      false 
    {'Jackson' }    Male      25     {'VA Hospital'              }      71       174      false 
    {'Clark'   }    Female    48     {'VA Hospital'              }      65       133      false 

Задайте объект настроек импорта, чтобы импортировать грязные данные из форматированного текстового файла фиксированной ширины. Сконфигурируйте объект, чтобы обработать грязные данные и использовать его для импорта таблицы.

Загрузка и предварительный просмотр текстового файла фиксированной ширины

Загрузите файл fixed_width_patients_subset_messy.txt и предварительный просмотр его содержимого в текстовом редакторе. Снимок экрана показан ниже. Снимок экрана показывает, что файл содержит:

  • Пустые линии - Линии 7, 12 и 13

  • Дополнительный столбец - Столбец 8

  • Отсутствующие данные - Линии 1, 4, 9 и 11

  • Частичные поля - Последние 3 строки

filename = 'fixed_width_patients_subset_messy.txt';

Просмотр и захват свойств файла с фиксированной шириной

Текстовый файл с фиксированной шириной имеет табличные данные, организованные начальным местоположением, количеством переменных, именами переменных и переменными ширинами. Соберите эти свойства и тип данных, которые вы хотите использовать для переменных.

DataStartLine = 2;  
NumVariables = 7;
VariableNames  = {'LastName','Gender','Age','Location','Height',...
                                                      'Weight','Smoker'};
VariableWidths = [ 10,     7,     4,    26,     7, ...
                                                         7,     7 ] ;                                                  
DataType       = {'char','categorical','double','char','double',...
                                                     'double','logical'};

Инициализация FixedWidthImportOptions Объект и настройка свойств переменной

Инициализируйте FixedWidthImportOptions и сконфигурируйте его свойства так, чтобы они совпадали со свойствами данных.

opts = fixedWidthImportOptions('NumVariables',NumVariables,...
                               'DataLines',DataStartLine,...
                               'VariableNames',VariableNames,...
                               'VariableWidths',VariableWidths,...
                               'VariableTypes',DataType);

Настройка EmptyLinesRule, Missing Rule, и ExtraColumnsRule

Считайте пустые линии в данных путем установки EmptyLineRule на 'read'. Затем заполните отсутствующие образцы предопределенными значениями путем установки MissingRule на 'fill'. Наконец, чтобы игнорировать дополнительный столбец во время импорта, установите ExtraColumnsRule на 'ignore'. Для получения дополнительной информации о свойствах и их значениях смотрите документацию для FixedWidthImportOptions.

opts.EmptyLineRule = 'read';
opts.MissingRule = 'fill'; 
opts.ExtraColumnsRule ='ignore';

Настройка PartialFieldRule

Частичные поля возникают, когда функция импорта достигает символа конца строки, прежде чем будет пройдена полная ширина переменной. Например, в этом предпросмотре последние три строки из файла fixed_width_patients_subset_messy.txt. Здесь, в последней строке последнего столбца, символ конца строки появляется после двух мест от начала поля, прежде чем будет достигнута полная переменная ширина трех.

Это вхождение частичного поля иногда может указывать на ошибку. Поэтому используйте PartialFieldRule чтобы решить, как обрабатывать эти данные. Чтобы сохранить данные частичного поля и преобразовать его в соответствующий тип данных, установите PartialFieldRule на 'keep'. Для получения дополнительной информации о PartialFieldRule, см. документацию для FixedWidthImportOptions.

opts.PartialFieldRule = 'keep';

Таблица импорта

Импортируйте таблицу при помощи readtable функции и FixedWidthImportOptions объект и предварительный просмотр данных.

T = readtable(filename,opts)
T=15×7 table
      LastName        Gender       Age              Location               Height    Weight    Smoker
    ____________    ___________    ___    _____________________________    ______    ______    ______

    {'Smith'   }    Male            38    {'County General Hospital'  }      71       176      true  
    {'Johnson' }    Male            43    {'VA Hospital'              }      69       163      false 
    {'Williams'}    Female          38    {'St. Mary's Medical Center'}     NaN       NaN      false 
    {'Jones'   }    Female          40    {'VA Hospital'              }      67       133      false 
    {'Brown'   }    Female          49    {'County General Hospital'  }      64       119      false 
    {0×0 char  }    <undefined>    NaN    {0×0 char                   }     NaN       NaN      false 
    {'Wilson'  }    Male            40    {'VA Hospital'              }      68       180      false 
    {'Moore'   }    Male            28    {'St. Mary's Medical Center'}     NaN       183      false 
    {'Taylor'  }    Female          31    {'County General Hospital'  }      66       132      false 
    {'Anderson'}    Female          45    {'County General Hospital'  }      68       NaN      false 
    {0×0 char  }    <undefined>    NaN    {0×0 char                   }     NaN       NaN      false 
    {0×0 char  }    <undefined>    NaN    {0×0 char                   }     NaN       NaN      false 
    {'White'   }    Male            39    {'VA Hospital'              }      72         2      false 
    {'Harris'  }    Female          36    {'St. Mary's Medical Center'}      65        12      false 
    {'Martin'  }    Male            48    {'VA Hospital'              }      71       181      true  

Совет

  • Введенный в:

    • R2017a — FixedWidthImportOptions объект

    • R2018b — fixedWidthImportOptions функция

См. также

|