分割表数据变量和应用功能
这个例子展示了如何分裂断电数据从一个表分成了不同的组,地区和停电的原因。然后展示如何应用函数来计算每一组统计数据和收集表中的结果。
断电数据加载
样例文件,outages.csv
,包含数据代表在美国电力中断。文件包含六列:地区
,OutageTime
,损失
,客户
,RestorationTime
,导致
。读outages.csv
一个表中。
T = readtable (“outages.csv”);
转换地区
和导致
分类数组,OutageTime
和RestorationTime
来datetime
数组。显示前五行。
T.Region= categorical(T.Region); T.Cause = categorical(T.Cause); T.OutageTime = datetime(T.OutageTime); T.RestorationTime = datetime(T.RestorationTime); T(1:5,:)
ans =5×6表___________ ______ __________地区OutageTime损失客户RestorationTime引起____ ___________售予西南2002-02-01 12:18 458.98 - 1.8202 e + 06 2002-02-01 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-07 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.1275 e + 05 2002-03-16 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 ___________ _________攻击258.18 582.63级地震能量紧急11638设备故障16659火872.96 8767.3暴风雷雨23418未知23141 2883.7 2796年冬季风暴
powerLosses
是一个表,因为T1
是一张桌子。你可以添加作为另一个表变量的最大损失。
计算最大的功率损耗,导致在每个区域。指定地区
和导致
分组变量,使用索引表。创建一个表,其中包含最大的功率损耗和显示前15行。
T1 = T (: {“地区”,“原因”});[G, powerLosses] = findgroups (T1);powerLosses。maxLoss =splitapply(@max,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。来talCustomers = splitapply(osumFcn,T.Customers,G); powerLosses(1:15,:)
ans =15×4表中西部地区引起maxLoss ___________ totalCustomers ____ ____ * * *攻击0 0中西部能源应急设备故障903.28 - 1.7822 2378.7 - 6.3363 e + 05中西部e + 05中西部中西部雷雨暴风6808.7 - 1.3511 e + 07年15128 4.2563 e + 06中西部未知23141 3.9505 e + 06中西部风2053.8 - 1.8796 669.25 - 4.8887 e + e + 06中西部冬季风暴06东北攻击0 0 405.62 2181.8东北地震东北能源应急东北11638 1.4391 e + 05设备故障794.36 - 3.9961 e + 05东北火872.96 - 6.1292 e + 05东北东北雷雨暴风6002.4 - 2.7905 e + 07年23418 2.1885 e + 7
计算平均停电时间
确定所有美国的平均持续时间在小时停电。添加的平均持续时间停电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 5339.3 335.02中西部能源应急2378.7 - 6.3363 e + 05中西部设备故障903.28 - 1.7822 e + 05 17.863中西部暴风6808.7 - 1.3511 e + 07 78.906中西部雷雨15128 4.2563 3.9505 e + e + 06 51.245中西部未知23141 06 30.892中西部风2053.8 - 1.8796 e + 06 73.761中西部暴风雪669.25 - 4.8887 e + 06 127.58东北攻击东北地震0 0 0 405.62 2181.8 5.5117东北能源应急东北11638 1.4391 e + 05年77.345设备故障794.36 - 3.9961 e + 05 87.204东北火872.96 - 6.1292 e + 05 4.0267东北暴风6002.4 - 2.7905 e + 07年2163.5东北雷雨23418 2.1885 e + 07年46.098
另请参阅
findgroups
|splitapply
|rowfun
|varfun