MATLAB 基础知识 数据类型 表 定义表的导入选项

通常情况下,可以使用 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   
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

结冰架构

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值