主要内容

在时间表中选择时间

时间表是一种将时间与每一行关联起来的表。您可以通过以下几种方式选择其数据的基于时间的子集:

  • 查找在一定范围内的时间timerangewithtol功能。

  • 匹配重复出现的时间单位,例如天或月,使用的组成部分datetime数组。

  • 方法重新采样或分组数据调整时间函数。

例如,读取一个示例文件outages.csv其中包含2002年至2014年美国电力中断的数据。行乘以的向量,OutageTime,表示中断发生的时间。的readtimetable函数将其导入为datetime数组中。显示前五行。

TT = readtimetable (“outages.csv”);头(TT, 5)
OutageTime地区客户RestorationTime造成损失  ________________ _____________ ______ __________ ________________ ___________________ 2002-02-01 12:18{“西南”}458.98 - 1.8202 e + 06 2002-02-07 16:50{“暴风雪”}2003-01-23 00:49{“东南”}530.14 - 2.1204 e + 05 NaT{“暴风雪”}2003-02-07)21:15{“东南”}289.4 - 1.4294 e + 05 2003-02-17 08:14{“暴风雪”}2004-04-06 05:44{‘西方’}434.81 - 3.4037 e + 05 2004-04-06 06:10{“设备故障”}2002-03-16 06:18 186.44{“中西部”}2.1275e+05 2002-03-18 23:23{'强风暴'}

在R2019a之前,用readtable把它转换成一个时间表table2timetable

选择时间范围

方法可以查找特定范围内的数据timerange函数,该函数为索引定义基于时间的下标。例如,为2008年夏季定义一个区间,从6月20日开始,到9月21日结束。默认情况下,timerange定义了一个左闭右开的半开区间,因此指定结束日期为9月22日。

TR = timerange (“2008-06-20”“2008-09-22”
TR = schedule timerange下标:选择时间在半开放时间间隔内的时间表行:[20- june -2008 00:00:00, 22- september -2008 00:00:00)参见“时间表”中的“选择时间”。

找出在该范围内发生的中断,然后绘制随时间变化受影响的客户数量。

: summer08 = TT (TR);茎(summer08.OutageTime summer08.Customers) ylabel (“顾客”

图中包含一个axes对象。axes对象包含一个stem类型的对象。

在这段时间内的几次停机对客户产生了很大的影响。将范围扩大到整个2008年,寻找同样高的数字。

TR = timerange (“2008”“年”);: all08 = TT (TR);high08 = all08 (all08。客户> 500000年:);茎(high08.OutageTime high08.Customers) ylabel (“客户”

图中包含一个axes对象。axes对象包含一个stem类型的对象。

timerange函数也有助于选择特定的日期。通过比较选择时间datetime值可能会给出误导性的结果,因为所有datetime值包括日期和时间组件。对象的日期组件datetime值时,时间组件设置为午夜。因此,虽然有6月26日的数据,但这样的比较没有结果。

任何(summer08。OutageTime== datetime(“2008-06-26”))
ans =逻辑0

相反,你可以使用timerange

TR = timerange (“2008-06-26”“天”);: june26 = summer08 (TR)
june26 =1×5时间表OutageTime地区客户RestorationTime造成损失  ________________ _____________ ______ _________ ________________ _________________ 2008-06-26 22:36{“东北”}425.21 93612 2008-06-27 06:53{“雷雨”}

定义范围的另一种方法是指定使用时间前后的公差withtol.例如,找到2008年夏天的行OutageTime是在9月1日劳动节的三天内。

WT = withtol (“2008-09-01”天(3));: nearSep1 = summer08 (WT)
nearSep1 =4×5时间表OutageTime地区客户RestorationTime造成损失  ________________ _____________ ______ _________ ________________ ___________________ 2008-09-01二三35{“东南”}206.27 - 2.27 e + 05 NaT{“设备故障”}2008-09-01 00:18{“中西部”}74213 - 510.05 2008-09-01 14:07{“雷雨”}2008-09-02 19:01{“中西部”}南2.215 e + 05 2008-09-03 02:58{“暴风”}2008-08-29 20:25{‘西方’}南31624 2008-09-01 01:51{‘风’}

匹配时间单位

你也可以使用的单位datetime值,例如小时或天,以标识要进行逻辑索引的行。此方法对于指定周期间隔很有用。

例如,找到的值OutageTime月分量值小于等于3的,分别对应每年的一月、二月和三月。使用生成的逻辑数组进行索引TT

TR = (month(TT.OutageTime) <= 3);: winterTT = TT (TR);头(winterTT, 5)
OutageTime地区客户RestorationTime造成损失  ________________ _____________ ______ __________ ________________ ________________ 2002-02-01 12:18{“西南”}458.98 - 1.8202 e + 06 2002-02-07 16:50{“暴风雪”}2003-01-23 00:49{“东南”}530.14 - 2.1204 e + 05 NaT{“暴风雪”}2003-02-07)21:15{“东南”}289.4 - 1.4294 e + 05 2003-02-17 08:14{“暴风雪”}2002-03-16 06:18{“中西部”}186.44 - 2.1275 e + 05 2002-03-18 23:23{“暴风”}2005-02-04 08:18{“中西部”}南南{'攻击'}

创建一个饼状图的冬季原因。的函数只接受数值或分类输入,首先转换导致分类

winterTT。导致= categorical(winterTT.Cause); pie(winterTT.Cause) title(“一月至三月电力中断原因”);

按时间段分组

调整时间函数通过重新采样或对值分组来调整行时间以创建指定的间隔。它的预定义间隔范围从秒到年,您可以指定如何处理间隔的缺失值或多个值。例如,您可以从每周中选择第一个观察结果,或者以季度为单位计算观察结果。

对于停机数据,您可以使用调整时间找出每年的总数。首先,创建一个只有数字变量的时间表。然后,调用调整时间并指定一个年度间隔,使用和组合多个值。输出中每一年有一行,包含该年的总损失和受影响的总客户。

numTT = TT (:, vartype (“数字”));numTT =调整时间(numTT,“年”“和”);头(numTT, 5)
超时时间丢失客户________________ _______________ 2002-01-01 00:00 81335 1.3052e+07 2003-01-01 00:00 58036 1.396e+07 2004-01-01 00:00 51014 1.5523e+07 2005-01-01 00:00 33980 8.7334e+06 2006-01-01 00:00 35129 2.5729e+07

创建一个柱状图,显示每年受影响的客户数量。

酒吧(numTT.OutageTime numTT.Customers)包含(“年”) ylabel (“顾客”

图中包含一个axes对象。axes对象包含一个bar类型的对象。

使用行时间计算持续时间

您可以将时刻表的排时间与其他时间一起使用datetime持续时间值来执行计算。例如,计算停电数据中列出的停电持续时间。然后计算宕机持续时间的月中值并将其绘制出来。

首先将中断持续时间添加到TT减去行时间(即电源中断的开始时间)RestorationTime(这是电力中断的结束)。更改格式OutageDuration以天为单位显示中断的持续时间。的前五行显示TT

TT。OutageDuration = TT。RestorationTime- TT.OutageTime; TT.OutageDuration.Format =' d ';头(TT, 5)
OutageDuration OutageTime地区损失客户RestorationTime原因  ________________ _____________ ______ __________ ________________ ___________________ ______________ 2002-02-01 12:18{“西南”}458.98 - 1.8202 e + 06 2002-02-07 16:50{“暴风雪”}6.1889天2003-01-23 00:49{“东南”}530.14 - 2.1204 e + 05 NaT{“暴风雪”}南天2003-02-07)21:15{“东南”}289.4 - 1.4294 e + 05 2003-02-17 08:14{“暴风雪”}9.4576天2004-04-06 05:44{‘西方’}434.81 - 3.4037 e + 05年2004-04-0606:10{'设备故障'}0.018056天2002-03-16 06:18{'中西部'}186.44 2.1275e+05 2002-03-18 23:23{'严重风暴'}2.7118天

创建一个只包含中断持续时间的时间表。一些行TT有缺失值,NaT,为复辟时代,引至OutageDuration.删除值从medianTT,可以使用rmmissing函数。然后使用调整时间计算每月宕机时间的中位数。的前五行显示medianTT

medianTT = TT (:,“OutageDuration”);medianTT = rmmissing (medianTT);medianTT =调整时间(medianTT,“月”, @median);头(medianTT, 5)
超时时间超时时间________________ ______________ 2002-02-01 00:00 6.1889 days 2002-03-01 00:00 2.7472 days 2002-04-01 00:00 NaN days 2002-05-01 00:00 0.72917 days 2002-06-01 00:00 0.22431天

创建每月中位数停机时间的阶梯图。

楼梯(medianTT.OutageTime medianTT.OutageDuration)包含(“年”) ylabel (“平均持续时间(天)”

图中包含一个axes对象。axes对象包含一个stair类型的对象。

另请参阅

|||||||||||

相关的话题

Baidu
map