fixedWidthImportOptions

Настройки импорта возражают для текстовых файлов фиксированной ширины

Описание

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

Создание

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

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

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

    opts = detectImportOptions(filename)

Синтаксис

opts = fixedWidthImportOptions
opts = fixedWidthImportOptions('NumVariables',numVars)
opts = fixedWidthImportOptions(___,Name,Value)

Описание

пример

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

пример

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

Чтобы импортировать данные с помощью этого пользовательского объекта FixedWidthImportOptions, необходимо сначала настроить эти свойства: VariableNames, VariableWidths, VariableTypes и DataLine.

пример

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

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

развернуть все

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

Свойства

развернуть все

Variable Properties

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

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

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

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

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

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

Пример: opts.VariableWidths возвращает вектор переменных ширин, где каждый элемент соответствует ширине переменной в данных.

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

Чтобы обновить свойство VariableTypes, используйте функцию setvartype.

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

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

Типы данных: cell | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | categorical | datetime

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

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

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

Пример: 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.

Location Properties

Местоположение данных, заданное как положительное скалярное целое число или N- by-2 массив положительных скалярных целых чисел. Задайте DataLines с помощью одной из следующих форм.

Задайте как

Описание

n

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

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

[n1 n2]

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

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

[n1 n2; n3 n4;...]

Задайте несколько областей значений строки, чтобы считать с N- by-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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Delimited Text Properties

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

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

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

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

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

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

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

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

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

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

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

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

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

'Big5'

'ISO-8859-1'

'windows-847'

'Big5-HKSCS'

'ISO-8859-2'

'windows-949'

'CP949'

'ISO-8859-3'

'windows-1250'

'EUC-KR'

'ISO-8859-4'

'windows-1251'

'EUC-JP'

'ISO-8859-5'

'windows-1252'

'EUC-TW'

'ISO-8859-6'

'windows-1253'

'GB18030'

'ISO-8859-7'

'windows-1254'

'GB2312'

'ISO-8859-8'

'windows-1255'

'GBK'

'ISO-8859-9'

'windows-1256'

'IBM866'

'ISO-8859-11'

'windows-1257'

'KOI8-R'

'ISO-8859-13'

'windows-1258'

'KOI8-U'

'ISO-8859-15'

'US-ASCII'

 

'Macintosh'

'UTF-8'

 

'Shift_JIS'

 

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

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

Заменяющие правила

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

PartialFieldRule Поведение
'keep'

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

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

'fill'

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

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

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

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

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

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

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

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

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

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

MissingRule Поведение
'fill'

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

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

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

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

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

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

ImportErrorRule Поведение
'fill'

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

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

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

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

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

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

ExtraColumnsRule Поведение
'addvars'

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

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

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

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

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

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

Примеры

свернуть все

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

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

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

filename = fullfile(matlabroot,'examples','matlab','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 = fullfile(matlabroot,'examples','matlab','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 
    ''            <undefined>    NaN    ''                              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 
    ''            <undefined>    NaN    ''                              NaN       NaN      false 
    ''            <undefined>    NaN    ''                              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