主要内容

清洁时间表,缺失,重复或不均匀的时间

此示例显示了如何创建一个常规的时间表从一个已经失踪,复制或不均匀倍。甲时间表是一种类型的表中的相关联的是一个时间戳,或行时间,每行数据。在规则的时间表中,行时间是排序和唯一的,并且不同的规则时间步长。

此外,某些工具箱具有以数字阵列形式的规则间隔时间序列数据工作的功能。因此,该示例还示出了如何从与其他功能一起使用的时间表导出数据。

行时间存在许多问题,这些问题会使时间表变得不规则。行时间可能会丢失。它们可能会出故障。它们可以是重复的,使用相同的时间创建多个行,这些行可能具有相同或不同的数据。即使它们是存在的,有序的,唯一的,它们也可以因不同大小的时间步长而不同。

时间表提供了许多不同的方法来解决缺失,重复或不均匀的时间,并重新使用或聚合数据以创建正常的行时间。

  • 找到缺少的行时间,使用不见了

  • 删除缺少的时间和数据,使用RMM缺失

  • 通过其行时间对时间表进行排序,使用sortrows

  • 要制作具有唯一和排序行时间的时间表,请使用独特的调整时间

  • 要删除重复时间,请指定唯一时间和使用的向量调整时间

  • 为了使一个普通的时间表,指定一个固定的时间矢量和使用调整时间

加载时间表

从MAT文件加载示例时间表艰难时期其中包含2016年6月9日几个小时的天气测量。时间表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.709-Jun-2016 05:03:11 66.2 0.05 3 09-Jun-2016 08:49:10 67.2 0.01 2.7 09-Jun-2016 04:12:00 58.8

使用缺失的行时间查找并删除行

开始的一种方式是由具有发现和删除行或作为行时间缺少值。在行时间的向量中找到缺失值,使用不见了.的不见了函数返回包含的逻辑向量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时间表时间温度雨WINDSPEED ____________________ ____ ____ _________ 09君2016 6点01分04秒73 0.01 2.3 09君-2016 7时59分23秒59 0.08 0.9 09君-2016 9时53分57秒59 0.03 3.4 09军-2016 9时53分57秒67 0.03 3.4 09君-2016 9时53分57秒67 0.03 3.4 09君-2016 8点49分10秒62 0.01 2.7 09君-2016 8点49分10秒75.8 0.01 2.7 09-Jun-2016 8点49分10秒82 0.01 2.7 09君-2016 5点03分11秒66.2 0.05 3 09君-2016 8点49分10秒67.2 0.01 2.7 09君2016 4时12分00秒58.8的NaN南

此方法只删除缺少行时间的行。时间表变量仍然可能有丢失的数据值。例如,的最后一行goodRowTimesTT为价值观风速变量。

与缺少时间和缺失数据删除行

作为替代方案,您可以通过使用使用的同时删除缺失的行时间和缺少数据值RMM缺失函数。RMM缺失删除具有缺少行时间,缺少数据值或两者的任何时间表行。

显示缺少的行时间和缺少的数据值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.709-Jun-2016 05:03:11 66.2 0.05 3 09-Jun-2016 08:49:10 67.2 0.01 2.7 09-Jun-2016 04:12:00 58.8

删除具有缺失行次数或数据值的所有行。将剩余的行分配给时间表goodValuesTT

goodvaluestt = rmmissing(tt)
goodValuesTT =10×3的时间表时间温度雨WINDSPEED ____________________ ____ ____ _________ 09君2016 6点01分04秒73 0.01 2.3 09君-2016 7时59分23秒59 0.08 0.9 09君-2016 9时53分57秒59 0.03 3.4 09军-2016 9时53分57秒67 0.03 3.4 09君-2016 9时53分57秒67 0.03 3.4 09君-2016 8点49分10秒62 0.01 2.7 09君-2016 8点49分10秒75.8 0.01 2.7 09-Jun-2016 8时49分10秒82 0.01 2.7 09君-2016 5点03分11秒66.2 0.05 3 09君-2016 8时49分10秒67.2 0.01 2.7

排序时间表,并确定它是否是有规律的

在处理完丢失的值后,您可以继续对时间表进行排序,然后确定排序后的时间表是否正常。

确定if.goodValuesTT已经排序,使用订购函数。

TF = Sensorted(GoodValuestt)
tf =逻辑0.

由于它不是,使用sortrows函数。

sortedTT =调用sortRows(goodValuesTT)
sortedtt =.10×3的时间表时间临时雨风速  ____________________ ____ ____ _________ 09 - 2016年6月——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 - 2016年6月——09:53:57 59 0.03 - 3.4 09 - jun - 201609- june -2016 09:53:57 67 0.03 3.4

确定是否sortedTT是常规的。一个固定的时间表在连续的行时间之间有相同的时间间隔。即使是一个有序的时间表也可能有不统一的时间步骤。

tf = isregular (sortedTT)
tf =逻辑0.

因为它不是,显示行时间之间的差异。

差异(sortedtt.time)
ans =.9X1持续时间○时57分53秒1点58分19秒零点49分47秒00:00:00 00:00:00 00:00:00 1时04分47秒00:00:00 00:00:00

由于行时间进行排序,这一结果表明,一些行时间是独一无二的,有些是重复的。

删除重复的行

时刻表可以有重复的行。时间表行重复,如果他们有相同的行时间和相同的数据值。在这个例子中,最后两行sortedTT是重复的行。(还有其他行sortedTT具有重复的行时间但不同的数据值。)

从中删除重复行的步骤sortedTT,使用独特的.的独特的函数返回唯一行并按行次次排序。

uniqueRowsTT =独特(sortedTT)
uniqueRowsTT =9×3的时间表时间临时雨风速  ____________________ ____ ____ _________ 09 - 2016年6月——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年6月- 201609:53:57 67 0.03 3.4

查找具有重复时间和不同数据的行

时刻表可以有重复行的时间,但不同的数据值的行。在这个例子中,uniquerrowstt具有多行,行时间相同,但值不同。

发现有重复的行时间的行。首先,排序列次,发现它们之间有没有区别连续倍。它们之间没有什么区别时间是重复的。指数回的排次的矢量和返回一套独特的倍确定重复行时间uniquerrowstt

duplime = sort(uniquerrowstt.time);tf =(diff(duldime)== 0);duplime = duptime(tf);duplime =独特(破坏)
dupTimes =2×1日期时间09-Jun-2016 08:49:10 09-Jun-2016 09:53:57

要显示与重复行时间,索引行uniquerrowstt使用dupTimes.何时索引时,输出时间表包含具有匹配行时间的所有行。

uniqueRowsTT (dupTimes:)
ans =6×3时间表时间温度雨风速____________________ _________________ 09-Jun-2016 08:49:10 62 0.01 2.7 09-Jun-2016 08:49:10 67.2 0.01 2.7 09-Jun-2016 08:49:10 75.8 0.01 2.7 09-Jun-2016 08:49:10 82 0.01 2.7 09-Jun-2016 09:53:57 59 0.03 3.4 09-Jun-2016 09:53:57 67 0.03 3.4

选择具有重复时间的第一个和最后行

当时间表具有重复时间的行时,您可能希望选择特定行并丢弃具有重复时间的其他行。例如,您可以使用使用重复行时间选择第一个或最后一行的第一个或最后一行独特的调整时间功能。

首先,创建唯一行时间的向量TT.通过使用独特的

uniqueTimes =唯一的(uniqueRowsTT.Time)
Uniquetimes =.5X1日期时间09-Jun-2016 05:03:11 09-Jun-2016 06:01:04 09-Jun-2016 07:59:23 09-Jun-2016 08:49:10 09-Jun-2016 09:53:57

选择从每一组具有重复多次行的第一行。从第一行复制数据,指定“第一价值”方法。

firstUniqueRowsTT=重定时(uniqueRowsTT,uniqueTimes,“第一价值”
FirstuniquerOWSTT =5×3的时间表Time Temp Rain Windspeed ____________________ ______________ 09-Jun-2016 05:03:11 66.2 0.05:03:11 66.2 0.05:01 09-Jun-2016 06:01:04 73 0.01 0.3 09-Jun-2016 07:59:23 59 0.08 0.9 09-Jun 0.08 0.9 09-Jun 0.08 0.9 09-Jun 0.08 0.9 09-Jun-2016八点49分10秒62 0.01 2.7 09君-2016 9时53分57秒59 0.03 3.4

从具有重复时间的每组行中选择最后行。要从最后行复制数据,请指定“lastvalue”方法。

Lastuniquerowstt = Retime(UniqueRowStt,Uniquetimes,“lastvalue”
Lastuniquerowsttt =5×3的时间表Time Temp Rain Windspeed ____________________ ______________ 09-Jun-2016 05:03:11 66.2 0.05:03:11 66.2 0.05:01 09-Jun-2016 06:01:04 73 0.01 0.3 09-Jun-2016 07:59:23 59 0.08 0.9 09-Jun 0.08 0.9 09-Jun 0.08 0.9 09-Jun 0.08 0.9 09-Jun-2016 08:49:10 82 0.01 2.7 09-jun-2016 09:53:57 67 0.03 3.4

其结果是,最后两行第一大学LastuniquerOWSTT有不同的价值观临时雇员多变的。

从重复时报所有行汇总数据

另一种处理具有重复时间的行中的数据的方法是以某种方式聚合或组合数据值。例如,您可以计算同时拍摄相同数量的多个测量的手段。

方法计算具有重复行次数的行的平均温度、降雨量和风速调整时间函数。

meanTT =重新定时(uniqueRowsTT,uniqueTimes,“的意思是”
意思是=5×3的时间表时间温度雨风速____________________ __________________ 09-Jun-2016 05:03:11 66.2 0.05 3 09-Jun-2016 06:01:04 73 0.01 2.3 09-Jun-2016 07:59:23 59 0.08 0.9 09-Jun-2016 08:49:10 71.75 0.01 2.7 09-Jun-2016 09:53:57 63 0.03 3.4

其结果是,最后两行meanTT有平均气温吗临时雇员具有重复行时的行的变量。

使时间表有规律

最后,您可以使用不规则时间表重新使用数据来定期使用调整时间函数。例如,您可以插入数据meanTT到一个固定的每小时时间向量上。要使用线性插值,请指定'线性'.每一行时间霍利特从小时开始,连续行时间之间有一个小时的间隔。

hourlyTT =重新定时(meanTT,“每小时”'线性'
霍利特=6×3时间表时间临时雨风速度__________________________________________ 09-jun-2016 05:00 0.09-Jun-2016 06:00:00 06:00:00 72.875 0.09 09 09-Jun-2016 07:00:00 66.027 0.027 0.027 0.027 09-Jun 1.6027 09-Jun 1.6027 09-Jun-2016 08:00:00 59.158 0.079133 0.9223 09-jun-2016 09:00:00 70.287 0.013344 2.8171 09-jun-2016 10:00:00 62.183 0.031868 3.4654

而不是使用预定的时间步长,例如“每小时”,您可以指定自己的时间步长。要指定30分钟的时间步长,使用'常规的'输入参数和“步伐”名称值参数。您可以指定任何大小的时间步骤期间日历价值。

regularTT =重新定时(meanTT,'常规的''线性'“步伐”,分钟(30))
regularTT =11×3时间表时间温度雨风速____________________ ______ ________ _________ 09军-2016 05:00:00 65.826 0.0522 3.0385 09军-2016五点30分○○秒69.35 0.031468 2.6757 09军-2016 06:00:00 72.875 0.010737 2.3129 09军-2016 6时三十分00秒69.576 0.027118 1.9576 09君2016七时00分00秒66.027 0.044867 1.6027 09君-2016 7点30分○○秒62.477 0.062616 1.2477 09君-2016 8点00分00秒59.158 0.079133 0.9223 09-Jun-2016 8点30分○○秒66.841 0.03695 2.007 09君-2016 9点00分零零秒70.287 0.013344 2.8171 09君-2016 9时30分○○秒66.235 0.022606 3.1412 09君2016 10:00:00 62.183 0.0318683.4654

将定期的时间表数据提取为数组

您可以导出时间表数据与函数的使用来分析在时间上间隔规则的数据。例如,计量经济学工具箱™和信号处理工具箱™具有可用于在间隔规则的数据进一步的分析功能。

以数组形式提取时间表数据。你可以使用变量属性返回数据作为数组,只要表变量的数据类型,允许它们被连接起来。

a = scallartt.variables.
A =11×30.0315 2.6757 72.8747 0.0107 2.3129 69.5764 0.0271 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。变量等价于使用花括号语法,调节器{:,:},访问时间表变量的数据。

A2 = regularTT {:,:}
A2=11×30.0315 2.6757 72.8747 0.0107 2.3129 69.5764 0.0271 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⋮

也可以看看

|||||||||

相关话题