主要内容

清洁时间表与失踪、重复或不均匀

这个例子显示了如何创建一个常规的时间表从一个失踪,复制,或非均匀。时间表是一种表相关联一个时间戳,或行时间,每一行的数据。在一个常规的时间表,行乘以排序和独特的,不同的相同的常规时间步。

同时,一些工具箱函数,工作定期间隔的时间序列数据的形式数字数组。因此,示例还展示了如何从一个时间表使用导出数据与其他功能。

有一些问题行乘以,它能使时间表不规则。行乘以可以失踪。他们可以出故障了。他们可以复制,创建多行同时可能相同或不同的数据。甚至当他们出现时,分类,和独特的,他们可以不同大小不同的时间步骤。

时间表提供许多不同的方法来解决失踪,复制,或非均匀,并重新取样或聚合数据创建常规行乘以。

  • 寻找失踪的行次,使用ismissing

  • 删除丢失的时间和数据,使用rmmissing

  • 由行乘以一个时间表,使用sortrows

  • 做一个时间表和独特的行乘以排序,使用独特的调整时间

  • 删除重复的时候,指定一个向量独特的时间和使用调整时间

  • 常规的时间表,指定一个固定时间向量和使用调整时间

负载的时间表

加载一个样品从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

因此,最后的两行firstUniqueRowsTTlastUniqueRowsTT不同的价值观吗临时变量。

聚合数据从所有行重复的时代

另一种处理数据的行有重复次聚合或以某种方式将数据值。例如,您可以计算的几个测量相同数量的同时。

计算平均气温、降雨和风速的行复制行乘以使用调整时间函数。

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⋮

另请参阅

|||||||||

相关的话题