这个例子展示了如何从一个表由停电的区域和导致分裂停电数据成组。然后,它说明了如何应用函数来计算统计信息,每个组并收集在一个表中的结果。
示例文件,outages.csv
,包含代表在美国电力公司停电数据。该文件包含六列:地区
那OutageTime
那损失
那客户
那恢复时间
, 和原因
。读outages.csv
到表。
t = readtable('outages.csv');
转变地区
和原因
到分类数组和OutageTime
和恢复时间
到DateTime.
阵列。显示前五行。
T.Region =分类(T.Region);T.Cause =分类(T.Cause);T.OutageTime =日期时间(T.OutageTime);T.RestorationTime =日期时间(T.RestorationTime);T(1:5,:)
ans =.5×6表地区OutageTime客户流失RestorationTime原因_________ ________________ ______ __________ ________________ _______________西南2002-02-01 12时18 458.98 1.8202e + 06 2002年2月7日16时50分冬季风暴东南2003-01-23○点49 530.14 2.1204e + 05的NaT冬季风暴东南2003-02-07 21:15 289.4 1.4294e + 05 2003-02-17 08:14冬季风暴西2004-04-06 05:44 434.81 3.4037e + 05 2004-04-06 06:10设备故障中西部2002年3月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(@最大,T.Loss,G)
maxLoss =5×110.4.×2.3141 2.3418 0.8767 0.2796 1.6659
计算最大功率损失由于引起停电。要指定原因
是分组变量,使用表的索引。创建包含的最大功率损失及其原因的表。
T1 = T(:,'原因');[G,powerLosses] = findgroups(T1);powerLosses.maxLoss = splitapply(@最大,T.Loss,G)
powerLosses =10×2表原因maxLoss ________________ _______攻击582.63地震258.18能源应急11638设备故障16659火灾872.96严重的风暴8767.3雷雨23418未知23141风2796冬季风暴2883.7
powerLosses
是一个表,因为T1.
是一个表。您可以附加的最大损失为另一个表变量。
计算在每个区域中通过引起的最大功率损耗。要指定地区
和原因
是分组变量,使用表的索引。创建包含的最大功率损失表,显示前15行。
T1 = T(:,{'地区'那'原因'});[G,powerLosses] = findgroups(T1);powerLosses.maxLoss = splitapply(@最大,T.Loss,G);powerLosses(1:15,:)
ans =.15×3的表地区原因maxLoss _________ ________________ _______中西部攻击0中西部能源应急2378.7中西部设备故障903.28中西部强风暴6808.7中西部雷雨15128中西部未知23141中西部风2053.8中西部的暴风雪669.25东北地区袭击405.62东北地区地震0东北亚能源应急11638东北地区设备故障794.36东北地区火872.96东北地区强风暴6002.4东北地区雷雨23418
确定由事业和区域客户电力中断的影响。因为T.Loss
包含南
值,包和
在一个匿名函数使用'omitnan'
输入参数。
osumFcn = @(X)(总和(X,'omitnan'));powerLosses.totalCustomers = splitapply(osumFcn,T.Customers,G);powerLosses(1:15,:)
ans =.15×4表原因maxLoss totalCustomers地区_________ ________________ _______ ______________中西部攻击0 0中西部能源告急2378.7 6.3363e + 05中西部设备故障903.28 1.7822e + 05中西部强风暴6808.7 1.3511e + 07中西部雷雨15128 4.2563e + 06中西部未知23141 3.9505e +06中西部的风2053.8 1.8796e + 06中西部的暴风雪669.25 4.8887e + 06东北地区袭击405.62 2181.8东北地区地震0 0东北亚能源应急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.RestorationTime
有的NaT
值,省略了所得南
计算平均持续时间时的值。
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 _________ ________________ _______ ______________ __________中西部攻击0 0 335.02中西部能源告急2378.7 6.3363e + 05 5339.3中西部设备故障903.28 1.7822e + 05 17.863中西部强风暴6808.7 1.3511e + 07 78.906中西部雷雨15128 4.2563e + 0651.245中西部未知23141 3.9505e + 06 30.892中西部风2053.8 1.8796e + 06 73.761中西部的暴风雪669.25 4.8887e + 06 127.58东北地区袭击405.62 2181.8 5.5117东北地区地震0 0 0东北亚能源应急11638 1.4391e + 05 77.345东北地区设备故障794.36 3.9961E + 05 87.204东北地区火872.96 6.1292e + 05 4.0267东北地区强风暴6002.4 2.7905e + 07 2163.5东北地区雷雨23418 2.1885e + 07 46.098
findgroups
|rowfun
|splitapply
|varfun