这个例子展示了如何使用readtable
函数将混合数据从文本文件导入到表中。然后,展示了如何修改和分析表中的数据。
样例文件,outages.csv
,包含了美国电力供应中断的数据。以下是文件的前几行:
地区,OutageTime、损失、客户、RestorationTime导致西南,2002-01-20 11:49,672,2902379,2002-01-24 21:58,冬季风暴东南部,2002-01-30 01:18,796,336436年,2002-02-04 11:20,冬季风暴东南部,2004-02-03 21:17,264.9,107083年,2004-02-20 03:37,冬季风暴西方,2002-06-19 13:39,391.4,378990年,2002-06-19 14:27、设备故障
该文件包含六列。文件中的第一行列出数据的列标题。以下是列的标题,以及列中数据的描述:
地区
:每次停电发生的五个区域之一的文本值
OutageTime
:中断开始的日期和时间,格式为年-月-日小时:分钟
损失
:数字值,表示停电时的总功率损失
客户
:指示受影响的客户数量的整数值
RestorationTime
:恢复电源的日期和时间,格式为年-月-日小时:分钟
导致
:停电原因的类别,以文本形式提供。
创建格式说明符的字符向量,以描述文本文件中的数据。然后可以将格式说明符传递给readtable
命令,导入数据。因为outages.csv
包含6列数据,创建包含6个格式说明符的字符向量,例如' % f '
对于浮点数,“% C”
对于绝对值,和' % D '
获取日期和时间值。
formatSpec =' % C {yyyy-MM-dd HH: mm} % D % % f % D {yyyy-MM-dd HH: mm} % C ';
formatSpec
告诉readtable
将文件中的第一列和最后一列作为分类数据读取,将第二列和第五列作为格式化的日期和时间数据读取,将第三列和第四列作为浮点值读取。为% {yyyy-MM-dd HH: mm} D
说明符,花括号之间的文本描述日期和时间数据的格式。
调用readtable
读取文件。使用分隔符
名称-值对参数指定分隔符。默认分隔符是逗号。使用格式
名称-值对参数以及formatSpec
值来描述文件中数据字段的格式。
T = readtable (“outages.csv”,“分隔符”,',',...“格式”, formatSpec);
readtable
返回一个包含中断数据的表。
查看表的前5行和前4个变量。
T (1:5, 1:4)
ans = 5x4 table Region OutageTime Loss Customers _________ ________________ ________________ SouthWest 2002-02-01 12:18 458.98 1.8202e+06 SouthEast 2003-01-23 00:49 530.14 2.1204e+05 SouthEast 2003-02-07 21:15 289.4 1.4294e+05 West 2004-04-06 05:44 434.81 3.4037e+05 MidWest 2002-03-16 06:18 186.44 2.1275e+05
表中包含的数据类型是混合的。第一个和最后一个变量是分类
数组,第二个和第五个变量是datetime
数组,其余的变量是数值数据。
修改中datetime列的格式T
.
T.OutageTime.Format =“dd-MMM-yyyy HH: mm: ss”;T.RestorationTime.Format =“dd-MMM-yyyy HH: mm: ss”;
查看表的前5行和前4个变量。
T (1:5, 1:4)
ans = 5x4 table Region OutageTime Loss Customers _________ ____________________ ________________ SouthWest 01-Feb-2002 12:18:00 458.98 1.8202e+06 SouthEast 23-Jan-2003 00:49:00 530.14 2.1204e+05 SouthEast 07-Feb-2003 21:15:00 289.4 1.4294e+05 West 06- apr -2004 05:44:00 434.81 3.4037e+05 MidWest 16-Mar-2002 06:18:00 186.44 2.1275e+05
计算每次停电的持续时间,并将数据附加到表中。
T.Duration = T.RestorationTime - T.OutageTime;
控件中的前5行数据持续时间
列的T
.
T.Duration (1:5)
ans = 5x1 duration array 148:32:00 NaN 226:59:00 00:26:00 65:05:00
对表进行排序OutageTime
变量。然后,查看排序表的前5行和前4个变量。
T = sortrows (T)“OutageTime”,“提升”);T (1:5, 1:4)
ans = 5x4 table Region OutageTime Loss Customers _________ ____________________ ________________ SouthWest 01-Feb-2002 12:18:00 458.98 1.8202e+06 MidWest 05- mar -2002 17:53:00 96.563 2.8666e+05 MidWest 16-Mar-2002 06:18:00 186.44 2.1275e+05 MidWest 26-Mar-2002 01:59:00 388.04 5.6422e+05 MidWest 20-Apr-2002 16:46:00 23141 NaN