主要内容

fixedWidthImportOptions

为固定宽度的文本文件导入选项对象

描述

一个FixedWidthImportOptions对象使您能够指定如何MATLAB®从文本文件中导入固定宽度的表格数据。对象包含控制数据导入过程的属性,包括错误和丢失数据的处理。

创建

您可以创建FixedWidthImportOptions对象使用fixedWidthImportOptions函数(此处描述)或detectImportOptions功能:

  • 使用fixedWidthImportOptions根据您的导入需求定义导入属性。

  • 使用detectImportOptions中指定的固定宽度文本文件的内容检测并填充导入属性文件名

    选择= detectImportOptions(文件名)

描述

例子

选择= fixedWidthImportOptions创建一个FixedWidthImportOptions对象的一个变量。

例子

选择= fixedWidthImportOptions(“NumVariables”,numVars中指定的变量数量创建对象numVars

例子

选择= fixedWidthImportOptions (___名称,值指定附加的属性FixedWidthImportOptions对象,使用一个或多个名称-值对参数。

输入参数

全部展开

变量的数量,指定为正标量整数。

属性

全部展开

变量的属性

变量名,指定为字符向量或字符串数组的单元格数组。的VariableNames属性包含在导入变量时要使用的名称。

如果数据包含N变量,但未指定变量名,然后VariableNames属性包含{‘Var1’,‘Var2’,……,“VarN”}

若要支金宝app持无效的MATLAB标识符作为变量名,如变量名包含空格和非ascii字符,请设置VariableNamingRule“保存”

例子:选择。VariableNames返回当前(检测到的)变量名。

例子:opts.VariableNames(3) ={“高度”}将第三个变量的名称更改为高度

数据类型:字符|字符串|细胞

标志以保留变量名,指定为“修改”“保存”

  • “修改”-转换无效的变量名(由isvarname函数)的有效MATLAB标识符。

  • “保存”-保留不是有效的MATLAB标识符的变量名,例如包含空格和非ascii字符的变量名。

从R2019b开始,变量名和行名可以包含任何字符,包括空格和非ascii字符。此外,它们可以以任何字符开头,而不仅仅是字母。变量和行名不一定是有效的MATLAB标识符(由isvarname功能)。要保留这些变量名和行名,可以设置VariableNamingRule“保存”.的值时,不刷新变量名VariableNamingRule改变从“修改”“保存”

数据类型:字符|字符串

固定宽度文本文件中变量的字段宽度,指定为正整数值向量。向量中的每个正整数对应于组成变量的字段中的字符数。的VariableWidths属性中指定的每个变量都对应一个条目VariableNames财产。

变量的数据类型,指定为字符向量的单元格数组或包含一组有效数据类型名称的字符串数组。的VariableTypes属性指定在导入变量时要使用的数据类型。

更新VariableTypes属性,使用setvartype函数。

例子:选择。VariableTypes返回当前变量数据类型。

例子:选择= setvartype(选择“高度”,{“双重”})更改变量的数据类型高度

要导入的变量的子集,指定为字符向量、字符串标量、字符向量的单元格数组、字符串数组或数字索引数组。

SelectedVariableNames必须是包含在VariableNames财产。默认情况下,SelectedVariableNames的所有变量名VariableNames属性,这意味着导入所有变量。

使用SelectedVariableNames属性只导入感兴趣的变量。属性指定变量的子集SelectedVariableNames属性和使用readtable只导入该子集。

若要支金宝app持无效的MATLAB标识符作为变量名,如变量名包含空格和非ascii字符,请设置VariableNamingRule“保存”

例子:选择。SelectedVariableNames ={“高度”,“姓”}只选择两个变量,高度,用于导入操作。

例子:选择。SelectedVariableNames = [1 5]只选择两个变量,第一个变量和第五个变量,用于导入操作。

例子:T = readtable(文件名,选择)属性中指定的变量返回一个表SelectedVariableNames财产的选择对象。

数据类型:uint16|uint32|uint64|字符|字符串|细胞

类型特定的变量导入选项,作为变量导入选项对象的数组返回。属性中指定的每个变量对应的数组包含一个对象VariableNames财产。数组中的每个对象都包含支持导入具有特定数据类型的数据的属性。金宝app

变量选项支持以下数据类型:数字、文金宝app本、逻辑datetime,或分类

要查询变量的当前(或检测到的)选项,请使用getvaropts函数。

要设置和自定义变量的选项,请使用setvaropts函数。

例子:选择。VariableOptions返回VariableImportOptions对象,每个对象对应于数据中的每个变量。

例子:getvaropts(选择“高”)返回VariableImportOptions对象的高度变量。

例子:选择= setvaropts(选择、“高度”、“FillValue”,0)设置FillValue变量的属性高度0

位置属性

数据位置,指定为正标量整数或N -通过-2正标量整数数组。指定DataLines使用其中一种形式。

指定为

描述

n

指定第一行它包含数据。使用以下命令指定值n设置的值DataLines财产(n正).导入函数读取之间的所有行n和文件尾。

n必须是大于零的正整数。

(n1 n2)

指定线范围它包含数据。n1第一行是否包含数据和n2是包含数据的最后一行。

数组中的值(n1 n2)一定是非零正整数n2必须大于n1

(n1 n2;n3陶瓷;……)

指定多个线范围用铅笔阅读N -通过-2数组包含N不同的行范围。

一个有效的多行范围数组必须:

  • 按递增顺序指定行范围,即数组中指定的第一行范围出现在文件中其他行范围之前。

  • 只包含不重叠的行范围。

当指定多个行范围时,使用仅当指定数组中最后一行范围的结束时。例如,[1 3;5 6;8正)

例子:选择。DataLines = 5设置DataLines属性转换为值(5正).从一行开始读取所有行数据5到文件尾。

例子:选择。DataLines = [2 6]将属性设置为读取行2通过6

例子:选择。DataLines = [1 3;5 6;8正)将属性设置为读取行123.56,和所有的行之间8,文件结束符。

数据类型:||uint8|uint16|uint32|uint64

行名称位置,指定为正标量整数。的RowNamesColumn属性指定包含行名称的列的位置。

如果RowNamesColumn指定为0,则不导入行名。否则,从指定的列导入行名。

例子:选择。RowNamesColumn = 2;

数据类型:||uint8|uint16|uint32|uint64

变量名位置,指定为正标量整数。的VariableNamesLine属性指定变量名称所在的行号。

如果VariableNamesLine指定为0,则不导入变量名。否则,从指定行导入变量名。

例子:选择。VariableNamesLine = 6;

数据类型:||uint8|uint16|uint32|uint64

变量描述位置,指定为正标量整数。的VariableDescriptionsLine属性指定变量描述所在的行号。

如果VariableDescriptionsLine指定为0,则不导入变量描述。否则,从指定行导入变量描述。

例子:选择。VariableDescriptionsLine = 7;

数据类型:||uint8|uint16|uint32|uint64

可变单元位置,指定为一个正标量整数。的VariableUnitsLine属性指定变量单元所在的行号。

如果VariableUnitsLine指定为0,则不导入变量单元。否则,从指定行导入变量单元。

例子:选择。VariableUnitsLine = 8;

数据类型:||uint8|uint16|uint32|uint64

分隔的文本属性

要作为空白处理的字符,指定为包含一个或多个字符的字符向量或字符串标量。

例子:“空白”、“_”

例子:“空白”、“? !”

作为字符向量、字符串标量、字符向量单元格数组或字符串数组指定的行尾字符。

例子:' LineEnding ', ' \ n '

例子:“LineEnding”、“\ r \ n”

例子:LineEnding,{‘\ b’,‘:’}

数据类型:字符|字符串|细胞

注释的样式,指定为字符向量、字符串标量、字符向量的单元格数组或字符串数组。

例如,要忽略同一行百分号后面的文本,请指定CommentStyle作为“%”

例子:CommentStyle,{“/ *”}

数据类型:字符|字符串|细胞

与文件关联的字符编码方案,指定为逗号分隔对,由“编码”“系统”或标准字符编码方案名称。

当您没有指定任何编码时,该函数将使用自动字符集检测来确定读取文件时的编码。

例子:“编码”、“系统”使用系统默认编码。

数据类型:字符|字符串

替换规则

处理数据中的部分字段的过程,这些字段被指定为该表中的值之一。

部分字段规则 行为
“保持”

保留部分字段数据并将文本转换为适当的数据类型。

在某些情况下,当导入函数无法解释部分数据时,可能会发生转换错误。

“填满”

的内容替换丢失的数据FillValue财产。

FillValue属性中指定VariableImportOptions被导入变量的对象。有关访问的更多信息FillValue财产,看到getvaropts

“omitrow” 省略包含部分数据的行。
“omitvar” 省略包含部分数据的变量。
“包装” 开始读下一行字符。
“错误” 显示错误消息并中止导入操作。

例子:选择。PartialFieldRule =“保持”;

数据类型:字符|字符串

过程来处理数据中的空行,指定为“跳过”“读”,或“错误”.导入函数将空格解释为空。

空行规则 行为
“跳过” 跳过空行。
“读” 导入空行。中指定的值解析空行VariableWidthsVariableOptionsMissingRule,以及其他相关属性,例如空格
“错误” 显示错误消息并中止导入操作。

例子:选择。EmptyLineRule =“跳过”;

数据类型:字符|字符串

过程来管理丢失的数据,该数据指定为该表中的一个值。

失踪的规则 行为
“填满”

的内容替换丢失的数据FillValue财产。

FillValue属性中指定VariableImportOptions被导入变量的对象。有关访问的更多信息FillValue财产,看到getvaropts

“错误” 停止导入并显示一个错误消息,显示丢失的记录和字段。
“omitrow” 省略包含缺失数据的行。
“omitvar” 省略包含丢失数据的变量。

例子:选择。MissingRule =“omitrow”;

数据类型:字符|字符串

处理导入错误的过程,指定为该表中的一个值。

导入错误的规则 行为
“填满”

控件的内容替换发生错误的数据FillValue财产。

FillValue属性中指定VariableImportOptions被导入变量的对象。有关访问的更多信息FillValue财产,看到getvaropts

“错误” 停止导入并显示一个错误消息,显示导致错误的记录和字段。
“omitrow” 省略出现错误的行。
“omitvar” 省略发生错误的变量。

例子:选择。ImportErrorRule =“omitvar”;

数据类型:字符|字符串

过程来处理数据中指定为该表中的一个值的额外列。

额外的列规则 行为
“addvars”

要导入额外的列,请创建新变量。如果有N额外的列,然后导入新的变量“ExtraVar1”、“ExtraVar2’,……、“ExtraVarN”.额外的数据列被导入,就像它们的VariableTypes字符

“忽略” 忽略额外的数据列。
“包装” 将额外的数据列包装到新记录中。这个操作不会改变变量的数量。
“错误” 显示错误消息并中止导入操作。

数据类型:字符|字符串

对象的功能

getvaropts 获取变量导入选项
setvaropts 设置变量导入选项
setvartype 设置可变数据类型
预览 使用导入选项预览文件中的八行

例子

全部折叠

检查固定宽度格式的文本文件,初始化导入选项对象,并使用该对象从文本文件导入表。

加载和预览固定宽度的文本文件

加载文件fixed_width_patients_subset_perfect.txt并在文本编辑器中预览其内容。屏幕截图显示该文件包含固定宽度的格式化数据。

文件名=“fixed_width_patients_subset_perfect.txt”

检查和提取固定宽度文件的属性

固定宽度的文本文件具有由起始位置、变量数量、变量名称和可变宽度组织的表格数据。捕获这些属性和变量所需的数据类型。

DataStartLine = 2;NumVariables = 7;VariableNames = {“姓”“性别”“年龄”“位置”“高度”...“重量”“抽烟”};变量宽度= [10,7,4,26,7,...7,7];数据类型= {“字符”“分类”“双”“字符”“双”...“双”“逻辑”};

初始化和配置FixedWidthImportOptions对象

初始化一个FixedWidthImportOptions对象的属性,并配置其属性以匹配fixed_width_patients_subset_perfect.txt

选择= fixedWidthImportOptions (“NumVariables”NumVariables,...“DataLines”DataStartLine,...“VariableNames”VariableNames,...“VariableWidths”VariableWidths,...“VariableTypes”、数据类型);

导入表

使用readtableFixedWidthImportOptions对象来导入表。

T = readtable(文件名,选择)
T =10×7表LastName性别年龄位置身高体重吸烟者  ____________ ______ ___ _____________________________ ______ ______ ______ {' 史密斯的男性38}{县综合医院的}71 176真正的{“约翰逊”}男43 {VA医院的}69 163假{威廉姆斯的}女38{圣。玛丽的医学中心}64 131假{“棕色”}女49{县综合医院的}64 119假{米勒的}女33 {VA医院的}64 142真正的{“威尔逊”}男性40 {VA医院的}68 180假{“泰勒”}女31{县综合医院的}66 132假{“托马斯”}女42{圣。Mary's Medical Center'} 66 137假{'Jackson'} 25假{'VA医院'}71 174假{'Clark'} 48假{'VA医院'}65 133假

定义导入选项对象从固定宽度格式的文本文件导入混乱数据。配置对象以处理混乱的数据,并使用它导入表。

加载和预览固定宽度的文本文件

加载文件fixed_width_patients_subset_messy.txt并在文本编辑器中预览其内容。屏幕截图如下所示。屏幕截图显示该文件包含:

  • 空行-第7、12和13行

  • 一个额外的列——第8列

  • 缺失的数据-第1、4、9和11行

  • 部分字段-最后3行

文件名=“fixed_width_patients_subset_messy.txt”

检查和捕获固定宽度文件的属性

固定宽度文本文件具有按开始位置、变量数量、变量名称和可变宽度组织的表格数据。捕获这些属性和要用于变量的数据类型。

DataStartLine = 2;NumVariables = 7;VariableNames = {“姓”“性别”“年龄”“位置”“高度”...“重量”“抽烟”};变量宽度= [10,7,4,26,7,...7,7];数据类型= {“字符”“分类”“双”“字符”“双”...“双”“逻辑”};

初始化FixedWidthImportOptions对象和设置变量属性

初始化一个FixedWidthImportOptions对象,并配置其属性以匹配数据的属性。

选择= fixedWidthImportOptions (“NumVariables”NumVariables,...“DataLines”DataStartLine,...“VariableNames”VariableNames,...“VariableWidths”VariableWidths,...“VariableTypes”、数据类型);

设置EmptyLinesRule失踪的规则,ExtraColumnsRule

属性读取数据中的空行EmptyLineRule“读”.接下来,通过设置预定义的值来填充缺少的实例MissingRule“填满”.最后,要在导入过程中忽略额外的列,请设置ExtraColumnsRule“忽略”.有关属性及其值的更多信息,请参阅有关的文档FixedWidthImportOptions

选择。EmptyLineRule =“读”;选择。MissingRule =“填满”;选择。ExtraColumnsRule =“忽略”

设置PartialFieldRule

当导入函数在遍历整个可变宽度之前到达行尾字符时,就会出现部分字段。例如,在这个预览中,文件的最后三行fixed_width_patients_subset_messy.txt.在这里,在最后一列的最后一行中,行结束字符出现在字段开始的两个位置之后,在到达3的完整可变宽度之前。

这种局部字段的出现有时可能指示一个错误。因此,使用PartialFieldRule来决定如何处理这些数据。要保留部分字段数据并将其转换为适当的数据类型,请设置PartialFieldRule“保持”.有关的更多信息PartialFieldRule,请参阅有关FixedWidthImportOptions

选择。PartialFieldRule =“保持”

导入表

使用readtable函数和FixedWidthImportOptions对象并预览数据。

T = readtable(文件名,选择)
T =15×7表LastName性别年龄位置身高体重吸烟者  ____________ ___________ ___ _____________________________ ______ ______ ______ {' 史密斯的男性38}{县综合医院的}71 176真正的{“约翰逊”}男43 {VA医院的}69 163假{威廉姆斯的}女38{圣。玛丽的医学中心}南南假{“琼斯”}{VA医院的}67女133假{“棕色”}女49{县综合医院的}64 119假{0×0字符}<定义>南{0×0字符}南南男性40{“威尔逊”}{VA医院的}68 180男性28{{“摩尔”}的圣。玛丽的医学中心}南183假{“泰勒”}66年女31日{县综合医院的}132假{“安德森”}女45{县综合医院的}68南假{0×0字符}<定义>南{0×0字符}南南假{0×0字符}<定义>南{0×0字符}南南假{‘白’}男性39 {VA医院的}72 2假{哈里斯的}女性36{圣。Mary's Medical Center' 12 false ('Martin' s Male ' 48 {'VA Hospital'} 71 181 true

提示

  • 介绍:

    • R2017a -FixedWidthImportOptions对象

    • R2018b -fixedWidthImportOptions函数