exponenta event banner

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 с использованием одного или нескольких аргументов пары имя-значение.

Входные аргументы

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

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

Свойства

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

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

Имена переменных, определяемые как массив ячеек символьных векторов или строковый массив. 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 к допустимым идентификаторам MATLAB.

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

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

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

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

Тип данных переменной, указанный как массив ячеек символьных векторов, или строковый массив, содержащий набор допустимых имен типов данных. 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

Расположение имен строк, указанное как положительное скалярное целое число. 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

Свойства разделенного текста

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

Пример: '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 собственность.

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 собственность.

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

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

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

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

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

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

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

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 функция

См. также

|