清洁时间表与失踪、重复或不均匀
这个例子显示了如何创建一个常规的时间表从一个失踪,复制,或非均匀。时间表是一种表相关联一个时间戳,或行时间,每一行的数据。在一个常规的时间表,行乘以排序和独特的,不同的相同的常规时间步。
同时,一些工具箱函数,工作定期间隔的时间序列数据的形式数字数组。因此,示例还展示了如何从一个时间表使用导出数据与其他功能。
有一些问题行乘以,它能使时间表不规则。行乘以可以失踪。他们可以出故障了。他们可以复制,创建多行同时可能相同或不同的数据。甚至当他们出现时,分类,和独特的,他们可以不同大小不同的时间步骤。
时间表提供许多不同的方法来解决失踪,复制,或非均匀,并重新取样或聚合数据创建常规行乘以。
负载的时间表
加载一个样品从MAT-file时间表badTimes
包含天气测量了几个小时,6月9日,2016年。的时间表TT
包括温度、降水和风速测量在不规则的时期。
负载badTimesTT
TT =12×3的时间表临时雨____________________风速__ ___ _____ 09 - 73年6月- 2016年06:01:04 0.01 - 2.3 09年6月- 2016 07:59:23 59 0.08 - 0.9 09年6月- 2016年09:53:57 59 0.03 - 3.4 09 - 67年6月- 2016年09:53:57 0.03 - 3.4 NaT 56 0 0 09 - 67年6月- 2016年09:53:57 0.03 - 3.4 09 - 62年6月- 2016年08:49:10 0.01 - 2.7 09年6月- 2016年08:49:10 75.8 0.01 2.7 09 - 82年6月- 2016年08:49:10 0.01 - 2.7 09年6月- 2016 05:03:11 66.2 - 0.05 09年6月- 2016年08:49:10 67.2 0.01 2.7 09 - 2016年6月——04:12:00 58.8南南
找到并删除与缺失行乘以行
开始的一个方法是,通过发现和删除行NaT
或缺失值的行。寻找失踪行乘以向量的值,使用ismissing
。的ismissing
函数返回一个逻辑向量包含1
无论TT.Time
有一个缺失值。
natRowTimes = ismissing (TT.Time)
natRowTimes =12 x1逻辑阵列0 0 0 0 1 0 0 0 0 0⋮
只保留那些行没有缺失值作为行乘以,指数TT
使用~ natRowTimes
行指标。那些行分配给一个新的时间表,goodRowTimesTT
。
goodRowTimesTT = TT (~ natRowTimes,:)
goodRowTimesTT =11×3的时间表临时雨____________________风速__ ___ _____ 09 - 73年6月- 2016年06:01:04 0.01 - 2.3 09年6月- 2016年07:59:23 59 0.08 - 0.9 09 - 2016年6月——09:53:57 59 0.03 - 3.4 09 - 67年6月- 2016年09:53:57 0.03 0.03 - 3.4 3.4 09 - 67年6月- 2016年09:53:57 09 - 62年6月- 2016年08:49:10 0.01 - 2.7 09年6月- 2016年08:49:10 75.8 0.01 2.7 09 - 82年6月- 2016年08:49:10 0.01 - 2.7 09年6月- 2016 05:03:11 66.2 - 0.05 09年6月- 2016年08:49:10 67.2 0.01 2.7 09 - 2016年6月——04:12:00 58.8南南
这个方法只删除行,行乘以失踪。时间表变量仍然可能丢失的数据值。例如,最后一行goodRowTimesTT
有南
的值雨
和风速
变量。
删除与失踪的时间和丢失的数据行
作为一种替代方法,您可以删除行乘以失踪和丢失的数据值在同一时间使用rmmissing
函数。rmmissing
删除任何时间表失踪行乘以行,丢失的数据值,或两者兼而有之。
显示缺失行时间和丢失的数据值TT
。
TT
TT =12×3的时间表临时雨____________________风速__ ___ _____ 09 - 73年6月- 2016年06:01:04 0.01 - 2.3 09年6月- 2016 07:59:23 59 0.08 - 0.9 09年6月- 2016年09:53:57 59 0.03 - 3.4 09 - 67年6月- 2016年09:53:57 0.03 - 3.4 NaT 56 0 0 09 - 67年6月- 2016年09:53:57 0.03 - 3.4 09 - 62年6月- 2016年08:49:10 0.01 - 2.7 09年6月- 2016年08:49:10 75.8 0.01 2.7 09 - 82年6月- 2016年08:49:10 0.01 - 2.7 09年6月- 2016 05:03:11 66.2 - 0.05 09年6月- 2016年08:49:10 67.2 0.01 2.7 09 - 2016年6月——04:12:00 58.8南南
删除所有行有行乘以失踪或数据值。分配剩下的行时间表goodValuesTT
。
goodValuesTT = rmmissing (TT)
goodValuesTT =10×3的时间表临时雨____________________风速__ ___ _____ 09 - 73年6月- 2016年06:01:04 0.01 - 2.3 09年6月- 2016年07:59:23 59 0.08 - 0.9 09 - 2016年6月——09:53:57 59 0.03 - 3.4 09 - 67年6月- 2016年09:53:57 0.03 0.03 - 3.4 3.4 09 - 67年6月- 2016年09:53:57 09 - 62年6月- 2016年08:49:10 0.01 - 2.7 09年6月- 2016年08:49:10 75.8 0.01 2.7 09 - 82年6月- 2016年08:49:10 66.2 - 0.05 0.01 - 2.7 09 - jun - 2016 05:03:11 3 09 - 2016年6月——08:49:10 67.2 0.01 2.7
时间表,确定它是否定期
处理缺失值后,你可以继续你的时间表,然后确定是否定期进行排序的时间表。
来确定goodValuesTT
已经排序,使用issorted
函数。
tf = issorted (goodValuesTT)
tf =逻辑0
因为它不是,行乘以使用的时间表sortrows
函数。
sortedTT = sortrows (goodValuesTT)
sortedTT =10×3的时间表临时雨____________________风速__ ___ _____ 09 - jun - 2016 05:03:11 66.2 - 0.05 3 09 - 73年6月- 2016年06:01:04 0.01 - 2.3 09年6月- 2016年07:59:23 59 0.08 - 0.9 09 - 62年6月- 2016年08:49:10 0.01 - 2.7 09年6月- 2016年08:49:10 75.8 0.01 2.7 09 - 82年6月- 2016年08:49:10 0.01 - 2.7 09年6月- 2016 08:49:10 67.2 0.01 2.7 09年6月- 2016年09:53:57 59 0.03 - 3.4 09 - 67年6月- 2016年09:53:57 0.03 - 3.4 09 - 67年6月- 2016年09:53:57 0.03 - 3.4
确定是否sortedTT
是常规的。一个常规的时间表有相同的连续行乘以之间的时间间隔。甚至一个排序的时间表可以有时间步骤,并不统一。
tf = isregular (sortedTT)
tf =逻辑0
因为它不是显示行乘以之间的差异。
diff (sortedTT.Time)
ans =9 x1持续时间00:57:53 01:58:19 00:49:47就是就是就是01:04:47就是就是
自行乘以排序,这个结果表明一些行乘以是独一无二的和重复。
删除重复的行
时间表可以有重复的行。时间表行是重复的,如果他们有相同的行乘以和相同的数据值。在这个例子中,最后两行sortedTT
重复的行。(还有其他行sortedTT
重复的行乘以但不同的数据值)。
删除重复的行sortedTT
,使用独特的
。的独特的
函数返回的行和他们通过行乘以。
uniqueRowsTT =独特(sortedTT)
uniqueRowsTT =9×3的时间表临时雨____________________风速__ ___ _____ 09 - jun - 2016 05:03:11 66.2 - 0.05 3 09 - 73年6月- 2016年06:01:04 0.01 - 2.3 09年6月- 2016年07:59:23 59 0.08 - 0.9 09 - 62年6月- 2016年08:49:10 0.01 - 2.7 09年6月- 2016年08:49:10 67.2 0.01 2.7 09 - 2016年6月——08:49:10 75.8 0.01 2.7 09 - 82年6月- 2016年08:49:10 0.01 - 2.7 09年6月- 2016年09:53:57 59 0.03 - 3.4 09 - 67年6月- 2016年09:53:57 0.03 - 3.4
发现重复的时间和不同的数据行
时间表可以行重复行乘以但不同的数据值。在这个例子中,uniqueRowsTT
有几行与行乘以相同但不同的值。
找到的行复制行乘以。首先,对行排序时间和找到他们连续两次没有区别。他们是重复的时间没有区别。指数回行乘以向量的确定并返回一组独特的倍次重复行uniqueRowsTT
。
dupTimes = (uniqueRowsTT.Time)进行排序;tf = (diff (dupTimes) = = 0);dupTimes = dupTimes (tf);dupTimes =独特(dupTimes)
dupTimes =2 x1 datetime09 - 2016年6月- 2016 08:49:10 09年6月09:53:57
显示的行复制行乘以,指数uniqueRowsTT
使用dupTimes
。指数倍时,输出的时间表包含所有行匹配的行。
uniqueRowsTT (dupTimes:)
ans =6×3的时间表临时雨____________________风速__ ___ _____ 09 - 62年6月- 2016年08:49:10 0.01 - 2.7 09年6月- 2016年08:49:10 67.2 0.01 2.7 09 - 2016年6月——08:49:10 75.8 0.01 2.7 09 - 82年6月- 2016年08:49:10 0.01 - 2.7 09年6月- 2016年09:53:57 59 0.03 - 3.4 09 - 67年6月- 2016年09:53:57 0.03 - 3.4
选择第一个和最后一个行重复的倍
当时间表行重复的时候,你可能想要选择特定的行和丢弃的其他行重复的时代。例如,您可以选择第一个或最后一行复制行乘以使用独特的
和调整时间
功能。
首先,创建一个独特的行乘以向量TT
通过使用独特的
。
uniqueTimes =独特(uniqueRowsTT.Time)
uniqueTimes =5 x1 datetime09 - 2016年6月- 2016 05:03:11 09年6月06:01:04 09 - jun - 2016 07:59:23 09 - 2016年6月- 2016 08:49:10 09年6月09:53:57
从每组选择第一行的行复制。复制数据从第一行指定“firstvalue”
方法。
firstUniqueRowsTT =调整时间(uniqueRowsTT uniqueTimes,“firstvalue”)
firstUniqueRowsTT =5×3的时间表临时雨____________________风速__ ___ _____ 09 - jun - 2016 05:03:11 66.2 - 0.05 3 09 - 73年6月- 2016年06:01:04 0.01 - 2.3 09年6月- 2016年07:59:23 59 0.08 - 0.9 09 - 62年6月- 2016年08:49:10 0.01 - 2.7 09年6月- 2016年09:53:57 59 0.03 - 3.4
从每组选择最后一行的行复制。从最后一行复制数据,指定“lastvalue”
方法。
lastUniqueRowsTT =调整时间(uniqueRowsTT uniqueTimes,“lastvalue”)
lastUniqueRowsTT =5×3的时间表临时雨____________________风速__ ___ _____ 09 - jun - 2016 05:03:11 66.2 - 0.05 3 09 - 73年6月- 2016年06:01:04 0.01 - 2.3 09年6月- 2016年07:59:23 59 0.08 - 0.9 09 - 82年6月- 2016年08:49:10 0.01 - 2.7 09 - 67年6月- 2016年09:53:57 0.03 - 3.4
因此,最后的两行firstUniqueRowsTT
和lastUniqueRowsTT
不同的价值观吗临时
变量。
聚合数据从所有行重复的时代
另一种处理数据的行有重复次聚合或以某种方式将数据值。例如,您可以计算的几个测量相同数量的同时。
计算平均气温、降雨和风速的行复制行乘以使用调整时间
函数。
meanTT =调整时间(uniqueRowsTT uniqueTimes,“的意思是”)
meanTT =5×3的时间表时间临时雨风速____________________ _____ _____ _____ 09 - jun - 2016 05:03:11 66.2 - 0.05 3 09 - 73年6月- 2016年06:01:04 0.01 - 2.3 09年6月- 2016 07:59:23 59 0.08 - 0.9 09年6月- 2016年08:49:10 71.75 0.01 2.7 09 - 63年6月- 2016年09:53:57 0.03 - 3.4
因此,最后的两行meanTT
有温度的意味着什么临时
变量的行复制行乘以。
使时间表定期
最后,您可以重新取样数据从一个不规则的时间表定期使用调整时间
函数。例如,您可以插入的数据meanTT
在正常工资时间向量。使用线性插值,指定“线性”
。每一行的时间hourlyTT
开始一个小时,一个小时的时间间隔连续行乘以。
hourlyTT =调整时间(meanTT,“每小时”,“线性”)
hourlyTT =6×3的时间表时间临时雨风速____________________ ______月______ _____ 09 - jun - 2016 05:00:00 65.826 0.0522 3.0385 09 -君- 2016 06:00:00 72.875 0.010737 2.3129 09 - 2016 07:00:00 66.027 0.044867 1.6027 09年6月- 2016 08:00:00 59.158 0.079133 0.9223 09年6月- 2016年09:00:00 70.287 0.013344 2.8171 09 - 2016年6月——10:00:00 62.183 0.031868 3.4654
而不是使用一个预定义的时间步长等“每小时”
,您可以指定一个时间步的自己。指定一个时间步的30分钟,使用“普通”
输入参数和“步伐”
名称-值参数。您可以指定一个时间步的任何大小持续时间
或calendarDuration
价值。
regularTT =调整时间(meanTT,“普通”,“线性”,“步伐”分钟(30))
regularTT =11×3的时间表时间临时雨风速____________________ ______月______ _____ 09 - jun - 2016 05:00:00 65.826 0.0522 3.0385 09 -君- 2016 05:30:00 69.35 0.031468 2.6757 09 - 2016 06:00:00 72.875 0.010737 2.3129 09年6月- 2016年06:30:00 69.576 0.027118 1.9576 09 -君- 2016 07:00:00 66.027 0.044867 1.6027 09 - 2016 07:30:00 62.477 0.062616 1.2477 09年6月- 2016年08:00:00 59.158 0.079133 0.9223 09 -君- 2016 08:30:00 66.841 0.03695 2.007 09 - 2016 09:00:00 70.287 0.013344 2.8171 09年6月- 2016年09:30:00 66.235 0.022606 3.1412 09 - 2016年6月——10:00:00 62.183 0.031868 3.4654
常规时间表数据提取到数组中
您可以导出的时间表数据使用函数来分析数据,定期间隔的时间。例如,计量经济学工具箱™和信号处理工具箱™函数可以使用定期间隔的数据进一步分析。
提取时间表数据作为一个数组。您可以使用变量
属性返回数据作为一个数组,只要表变量的数据类型可以使它们连接。
一个= regularTT.Variables
一个=11×365.8260 0.0522 3.0385 69.3504 0.0315 2.6757 72.8747 0.0107 2.3129 69.5764 0.0271 1.9576 66.0266 0.0449 1.6027 62.4768 0.0626 1.2477 59.1579 0.0791 0.9223 66.8412 0.0370 2.0070 70.2868 0.0133 2.8171 66.2348 0.0226 3.1412⋮
regularTT.Variables
相当于使用花括号语法,regularTT {:,:}
时间表中的数据变量的访问。
A2 = regularTT {:,:}
A2 =11×365.8260 0.0522 3.0385 69.3504 0.0315 2.6757 72.8747 0.0107 2.3129 69.5764 0.0271 1.9576 66.0266 0.0449 1.6027 62.4768 0.0626 1.2477 59.1579 0.0791 0.9223 66.8412 0.0370 2.0070 70.2868 0.0133 2.8171 66.2348 0.0226 3.1412⋮
另请参阅
时间表
|table2timetable
|调整时间
|issorted
|sortrows
|独特的
|diff
|isregular
|rmmissing
|fillmissing