Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Dividir variables de datos de tabla y aplicar funciones

Este ejemplo muestra cómo dividir los datos de corte de energía de una tabla en grupos por región y la causa de los cortes de energía. A continuación, se muestra cómo aplicar funciones para calcular estadísticas para cada grupo y recopilar los resultados en una tabla.

Cargar datos de corte de energía

El archivo de ejemplo, contiene datos que representan interrupciones de la utilidad eléctrica en los Estados Unidos.outages.csv El archivo contiene seis columnas:,,,, y.RegionOutageTimeLossCustomersRestorationTimeCause Leer en una mesa.outages.csv

T = readtable('outages.csv');

Convierta y a matrices categóricas y a matrices.RegionCauseOutageTimeRestorationTimedatetime Visualice las primeras cinco filas.

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 table
     Region         OutageTime        Loss     Customers     RestorationTime          Cause     
    _________    ________________    ______    __________    ________________    _______________

    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   
    West         2004-04-06 05:44    434.81    3.4037e+05    2004-04-06 06:10    equipment fault
    MidWest      2002-03-16 06:18    186.44    2.1275e+05    2002-03-18 23:23    severe storm   

Calcular la pérdida de potencia máxima

Determine la mayor pérdida de energía debido a un corte de energía en cada región. La función devuelve un vector de números de grupo creados a partir de.findgroupsGT.Region La función utiliza para dividirse en cinco grupos, correspondientes a las cinco regiones. aplica la función a cada grupo y conmemora las pérdidas máximas de potencia en un vector.splitapplyGT.Losssplitapplymax

G = findgroups(T.Region); maxLoss = splitapply(@max,T.Loss,G)
maxLoss = 5×1
104 ×

    2.3141
    2.3418
    0.8767
    0.2796
    1.6659

Calcule la pérdida de potencia máxima debida a un corte de energía por causa. Para especificar que es la variable de agrupación, utilice la indexación de tablas.Cause Cree una tabla que contenga las pérdidas de potencia máximas y sus causas.

T1 = T(:,'Cause'); [G,powerLosses] = findgroups(T1); powerLosses.maxLoss = splitapply(@max,T.Loss,G)
powerLosses=10×2 table
         Cause          maxLoss
    ________________    _______

    attack              582.63 
    earthquake          258.18 
    energy emergency     11638 
    equipment fault      16659 
    fire                872.96 
    severe storm        8767.3 
    thunder storm        23418 
    unknown              23141 
    wind                  2796 
    winter storm        2883.7 

es una tabla porque es una tabla.powerLossesT1 Puede anexar las pérdidas máximas como otra variable de tabla.

Calcule la pérdida de potencia máxima por causa en cada región. Para especificar que y son las variables de agrupamiento, utilice la indexación de tablas.RegionCause Cree una tabla que contenga las pérdidas de potencia máximas y muestre las primeras 15 filas.

T1 = T(:,{'Region','Cause'}); [G,powerLosses] = findgroups(T1); powerLosses.maxLoss = splitapply(@max,T.Loss,G); powerLosses(1:15,:)
ans=15×3 table
     Region           Cause          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 
    NorthEast    equipment fault     794.36 
    NorthEast    fire                872.96 
    NorthEast    severe storm        6002.4 
    NorthEast    thunder storm        23418 

Calcular el número de clientes afectados

Determine el impacto del corte de energía en los clientes por causa y región. Porque contiene valores, encapsular en una función anónima para utilizar el argumento de entrada.T.LossNansum'omitnan'

osumFcn = @(x)(sum(x,'omitnan')); powerLosses.totalCustomers = splitapply(osumFcn,T.Customers,G); powerLosses(1:15,:)
ans=15×4 table
     Region           Cause          maxLoss    totalCustomers
    _________    ________________    _______    ______________

    MidWest      attack                   0                0  
    MidWest      energy emergency    2378.7       6.3363e+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      winter storm        669.25       4.8887e+06  
    NorthEast    attack              405.62           2181.8  
    NorthEast    earthquake               0                0  
    NorthEast    energy emergency     11638       1.4391e+05  
    NorthEast    equipment fault     794.36       3.9961e+05  
    NorthEast    fire                872.96       6.1292e+05  
    NorthEast    severe storm        6002.4       2.7905e+07  
    NorthEast    thunder storm        23418       2.1885e+07  

Calcular duraciones media de cortes de energía

Determine las duraciones media de todos los cortes de energía de EE. UU. en horas. Agregue las duraciones media de los cortes de energía a.powerLosses Dado que tiene valores, omita los valores resultantes al calcular las duraciones de media.T.RestorationTimeNaTNan

D = T.RestorationTime - T.OutageTime; H = hours(D); omeanFcn = @(x)(mean(x,'omitnan')); powerLosses.meanOutage = splitapply(omeanFcn,H,G); powerLosses(1:15,:)
ans=15×5 table
     Region           Cause          maxLoss    totalCustomers    meanOutage
    _________    ________________    _______    ______________    __________

    MidWest      attack                   0                0        335.02  
    MidWest      energy emergency    2378.7       6.3363e+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              23141       3.9505e+06        30.892  
    MidWest      wind                2053.8       1.8796e+06        73.761  
    MidWest      winter storm        669.25       4.8887e+06        127.58  
    NorthEast    attack              405.62           2181.8        5.5117  
    NorthEast    earthquake               0                0             0  
    NorthEast    energy emergency     11638       1.4391e+05        77.345  
    NorthEast    equipment fault     794.36       3.9961e+05        87.204  
    NorthEast    fire                872.96       6.1292e+05        4.0267  
    NorthEast    severe storm        6002.4       2.7905e+07        2163.5  
    NorthEast    thunder storm        23418       2.1885e+07        46.098  

Consulte también

| | |

Ejemplos relacionados

Más acerca de