定义表的导入选项
通常情况下,可以使用 readtable
函数来导入表。但有时导入表格数据需要对导入过程施加更多控制。例如,您可能希望选择变量,以导入或处理缺失数据或存在导致错误的数据的行。要控制导入过程,您可以创建导入选项对象。该对象具有您可以根据自己的导入需求进行调整的属性。
创建导入选项
要为样本数据集 airlinesmall.csv
创建导入选项对象,请使用 detectImportOptions
函数。detectImportOptions
函数将为此文本文件创建一个 DelimitedTextImportOptions
对象。有关导入选项对象的完整属性列表,请参阅 detectImportOptions
参考页。
opts = detectImportOptions('airlinesmall.csv');
自定义表级别的导入选项
您可以调整导入选项对象所包含的属性,以便控制导入过程。一些属性适用于整个表,而另一些则适用于特定的变量。影响整个表的属性包括用于管理导致错误的数据或缺失数据的规则。例如,通过将 ImportErrorRule
设为 'omitrow'
,删除包含会导致导入错误的数据的行。通过将 MissingRule
设为 'fill'
替换缺失值。FillValue
属性值决定了用来替换缺失值的值。例如,您可以用 NaN
来替换缺失值。
opts.ImportErrorRule = 'omitrow'; opts.MissingRule = 'fill';
自定义变量级别的导入选项
要获取和设置特定变量的选项,请使用 getvaropts
、setvartype
和 setvaropts
函数。例如,使用 getvaropts
函数查看名为 FlightNum
、Origin
、Dest
和 ArrDelay
的变量的当前选项。
getvaropts(opts,{'FlightNum','Origin','Dest','ArrDelay'});
使用 setvartype
函数更改变量的数据类型:
由于变量
FlightNum
中的值为航班标识符而不是数值,因此需要将其数据类型更改为char
。由于变量
Origin
和Dest
指定了重复文本值的有限集合,因此需要将其数据类型更改为categorical
。
opts = setvartype(opts,{'FlightNum','Origin','Dest','ArrDelay'},... {'char','categorical','categorical','single'});
使用 setvaropts
函数更改其他属性:
对于
FlightNum
变量,通过将WhiteSpaceRule
属性设为trimleading
,删除文本中的任何前导空白。对于
ArrDelay
变量,通过设置TreatAsMissing
属性,将包含0
或NA
的字段替换为在FillValue
属性中指定的值。
opts = setvaropts(opts,'FlightNum','WhitespaceRule','trimleading'); opts = setvaropts(opts,'ArrDelay','TreatAsMissing',{'0','NA'});
导入表
指定要获取的变量,使用 readtable
导入这些变量,并显示表的前 8
行。
opts.SelectedVariableNames = {'FlightNum','Origin','Dest','ArrDelay'}; T = readtable('airlinesmall.csv',opts); T(1:8,:)
ans=8×4 table
FlightNum Origin Dest ArrDelay
_________ ______ ____ ________
{'1503'} LAX SJC 8
{'1550'} SJC BUR 8
{'1589'} SAN SMF 21
{'1655'} BUR SJC 13
{'1702'} SMF LAX 4
{'1729'} LAX SJC 59
{'1763'} SAN SFO 3
{'1800'} SEA LAX 11
另请参阅
detectImportOptions
| getvaropts
| setvaropts
| setvartype
| readtable
| SpreadsheetImportOptions
| DelimitedTextImportOptions
| readmatrix
| readcell
| readvars