主要内容

拆分表数据变量和应用函数

这个示例演示了如何根据地区和停电原因将一个表中的停电数据分成组。然后,它展示了如何应用函数来计算每个组的统计数据,并将结果收集到一个表中。

负载断电数据

样例文件,outages.csv,包含了美国电力供应中断的数据。该文件包含六列:地区OutageTime损失客户RestorationTime,导致.读outages.csv一个表中。

T = readtable (“outages.csv”);

转换地区导致到分类数组,和OutageTimeRestorationTimedatetime数组。显示前5行。

T.Region =分类(T.Region);T.Cause =分类(T.Cause);T.OutageTime = datetime (T.OutageTime);T.RestorationTime = datetime (T.RestorationTime);: T (1:5)
ans =5×6表区域中断时间损失客户恢复时间原因_________ ________________ ________________ ________________ _______________ SouthWest 2002-02-01 12:18 458.98 1.8202e+06 2002-02-07 16:50 winter storm SouthEast 2003-01-23 00:49 530.14 2.1204e+05 NaT winter storm SouthEast 2003-02-07 21:15 289.4 1.4294e+05 2003-02-17 08:14 winter storm West2004-04-06 05:44 434.81 3.4037e+05 2004-04-06 06:10设备故障中西部2002-03-16 06:18 186.44 2.1275e+05 2002-03-18 23:23

计算最大功率损耗

确定每个地区因停电造成的最大电力损失。的findgroups函数返回G,一个由组号构成的向量T.Region.的splitapply函数使用G分裂T.Loss分成五组,对应五个区域。splitapply应用马克斯函数到每组,并将最大功率损耗连接成一个矢量。

G = findgroups (T.Region);maxLoss = splitapply (@max T.Loss, G)
maxLoss =5×1104× 2.3141 2.3418 0.8767 0.2796 1.6659

计算因停电原因造成的最大功率损失。指定导致是分组变量,使用表索引。创建一个包含最大功耗损失及其原因的表。

T1 = T (:,“原因”);[G, powerLosses] = findgroups (T1);powerLosses。maxLoss =splitapply(@max,T.Loss,G)
powerLosses =10×2表原因maxLoss ________________ _______攻击582.63地震258.18能源应急设备故障火灾872.96强风暴8767.3雷暴23418未知23141风冬季风暴2883.7

powerLosses是一个表格,因为T1是一张桌子。您可以将最大损失附加为另一个表变量。

按原因计算每个区域的最大功率损失。指定地区导致是分组变量,使用表索引。创建一个包含最大功耗损失的表,并显示前15行。

T1 = T (: {“地区”“原因”});[G, powerLosses] = findgroups (T1);powerLosses。maxLoss =splitapply(@max,T.Loss,G); powerLosses(1:15,:)
ans =15×3表地区原因maxLoss _________ ________________ _______ MidWest attack 0 MidWest energy emergency 2378.7 MidWest equipment fault 903.28 MidWest severe storm 6808.7 MidWest thunder storm 15128 MidWest unknown 23141 MidWest wind 2053.8 MidWest winter storm 669.25 NorthEast attack 405.62 NorthEast earthquake 0 NorthEast energy emergency 11638东北地区设备故障794.36东北地区火灾872.96东北强暴6002.4东北地区雷暴23418

计算受影响的客户数量

根据原因和地区确定停电对客户的影响。因为T.Loss包含值,包装总和在匿名函数中使用“omitnan”输入参数。

osumFcn = @ (x)(总和(x,“omitnan”));powerLosses。来talCustomers = splitapply(osumFcn,T.Customers,G); powerLosses(1:15,:)
ans =15×4表区域原因maxLoss totalCustomers _________ ________________ _______ ______________ MidWest attack 0 0 MidWest energy emergency 2378.7 6.336e +05 MidWest equipment fault 903.28 1.7822e+05 MidWest severe storm 6808.7 1.3511e+07 MidWest thunder storm 15128 4.2563e+06 MidWest unknown 23141 3.9505e+06 MidWest wind 2053.8 1.8796e+06 MidWest winter669.25 4.8887e+06东北强暴405.62 2181.8东北地震00东北能源应急11638 1.4391e+05东北设备故障794.36 3.9961e+05东北火灾872.96 6.1292e+05东北强暴6002.4 2.7905e+07东北雷暴23418 2.1885e+07

计算平均停电时间

确定美国所有停电的平均持续时间,以小时为单位。加上停电的平均持续时间powerLosses.因为T.RestorationTimeNaT值,省略结果值时,计算平均持续时间。

D = T.RestorationTime - T.OutageTime;H =小时(D);omeanFcn = @ (x)(平均(x,“omitnan”));powerLosses。meanOutage = splitapply (omeanFcn H, G);powerLosses (1:15,:)
ans =15×5表区域原因maxLoss totalCustomers meanOutage _________ ________________ _______ ______________ __________ MidWest attack 0 0 335.02 MidWest energy emergency 2378.7 6.33363e +05 5339.3 MidWest equipment fault 903.28 1.7822e+05 17.863 MidWest severe storm 6808.7 1.3511e+07 78.906 MidWest thunder storm 15128 4.2563e+06 51.245 MidWest unknown 231413.9505e+06 30.892中西部风2053.8 1.8796e+06 73.761中西部冬季风暴669.25 4.8887e+06 127.58东北袭击405.62 2181.8 5.5117东北地震00 0东北能源紧急11638 1.4391e+05 77.345东北设备故障2163.5东北雷暴23418 2.1885e+07 46.098

另请参阅

|||

相关的话题