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.

Limpie el horario con los tiempos perdidos, duplicados o no uniformes

En este ejemplo se muestra cómo crear un horario a partir de uno que tiene tiempos faltantes, duplicados o no uniformes.regular Un horario es un tipo de tabla que asocia una marca de tiempo o, con cada fila de datos.row time En un horario regular, los tiempos de fila son ordenados y únicos, y difieren en el mismo paso de tiempo regular. El ejemplo también muestra cómo exportar los datos de un calendario para su uso con otras funciones.

Los horarios pueden ser irregulares. Pueden contener filas que no están ordenadas por sus tiempos de fila. Los calendarios pueden contener varias filas con el mismo tiempo de fila, aunque las filas pueden tener valores de datos diferentes. Incluso cuando los tiempos de fila están ordenados y únicos, pueden diferir por pasos de tiempo de diferentes tamaños. Los horarios pueden incluso contener o valores para indicar los tiempos de fila faltantes.NaTNan

Los calendarios proporcionan varias maneras diferentes de resolver los tiempos perdidos, duplicados o no uniformes, y de remuestrear o agregar datos a los tiempos de fila regulares.

  • Para encontrar los tiempos de fila faltantes, utiliceismissing.

  • Para eliminar los tiempos y datos faltantes, utilicermmissing.

  • Para ordenar un horario por sus tiempos de fila, utilicesortrows.

  • Para hacer un horario con tiempos de fila únicos y ordenados, utiliceunique Yretime.

  • Para eliminar tiempos duplicados, especifique un vector de tiempo único y utiliceretime.

  • Para hacer un horario regular, especifique un vector de tiempo regular y useretime.

Horario de carga

Cargue un calendario de muestra del archivo MAT que contiene las mediciones meteorológicas tomadas durante varias horas el 9 de junio de 2016.badTimes El horario incluye mediciones de temperatura, lluvia y velocidad del viento tomadas en tiempos irregulares durante ese día.

load badTimes TT
TT=12×4 timetable
            Time            Temp    Rain    WindSpeed
    ____________________    ____    ____    _________

    09-Jun-2016 06:01:04      73    0.01       2.3   
    09-Jun-2016 07:59:23      59    0.08       0.9   
    09-Jun-2016 09:53:57      59    0.03       3.4   
    09-Jun-2016 09:53:57      67    0.03       3.4   
    NaT                       56       0         0   
    09-Jun-2016 09:53:57      67    0.03       3.4   
    09-Jun-2016 08:49:10      62    0.01       2.7   
    09-Jun-2016 08:49:10    75.8    0.01       2.7   
    09-Jun-2016 08:49:10      82    0.01       2.7   
    09-Jun-2016 05:03:11    66.2    0.05         3   
    09-Jun-2016 08:49:10    67.2    0.01       2.7   
    09-Jun-2016 04:12:00    58.8     NaN       NaN   

Eliminar filas con tiempos faltantes

Quite las filas que tienen, o un valor que falta, como el tiempo de fila.NaT Para encontrar los valores faltantes en el vector de tiempos de fila, utilice la función. Devuelve un vector lógico que contiene donde tiene un valor que falta.ismissingismissing1TT.Time Vuelva a indexar el calendario para mantener solo las filas que no tienen valores faltantes como tiempos de fila. Asigne esas filas a.TT2

TF = ismissing(TT.Time); TT2 = TT(~TF,:); TT2
TT2=11×4 timetable
            Time            Temp    Rain    WindSpeed
    ____________________    ____    ____    _________

    09-Jun-2016 06:01:04      73    0.01       2.3   
    09-Jun-2016 07:59:23      59    0.08       0.9   
    09-Jun-2016 09:53:57      59    0.03       3.4   
    09-Jun-2016 09:53:57      67    0.03       3.4   
    09-Jun-2016 09:53:57      67    0.03       3.4   
    09-Jun-2016 08:49:10      62    0.01       2.7   
    09-Jun-2016 08:49:10    75.8    0.01       2.7   
    09-Jun-2016 08:49:10      82    0.01       2.7   
    09-Jun-2016 05:03:11    66.2    0.05         3   
    09-Jun-2016 08:49:10    67.2    0.01       2.7   
    09-Jun-2016 04:12:00    58.8     NaN       NaN   

Este método quita solo las filas que faltan tiempos de fila. Es posible que las variables de tabla sigan teniendo valores de datos faltantes. Por ejemplo, la última fila de tiene valores para las variables y.TT2NanRainWindspeed

Eliminar filas con tiempos faltantes o datos faltantes

Puede eliminar los tiempos de fila faltantes y los valores de datos faltantes utilizando la función. quita cualquier fila de calendario que tenga un tiempo de fila que falta, valores de datos faltantes o ambos.rmmissingrmmissing

Mostrar el tiempo de fila que falta y los valores de datos faltantes de.TT A continuación, quite todos los valores faltantes de.TT

TT
TT=12×4 timetable
            Time            Temp    Rain    WindSpeed
    ____________________    ____    ____    _________

    09-Jun-2016 06:01:04      73    0.01       2.3   
    09-Jun-2016 07:59:23      59    0.08       0.9   
    09-Jun-2016 09:53:57      59    0.03       3.4   
    09-Jun-2016 09:53:57      67    0.03       3.4   
    NaT                       56       0         0   
    09-Jun-2016 09:53:57      67    0.03       3.4   
    09-Jun-2016 08:49:10      62    0.01       2.7   
    09-Jun-2016 08:49:10    75.8    0.01       2.7   
    09-Jun-2016 08:49:10      82    0.01       2.7   
    09-Jun-2016 05:03:11    66.2    0.05         3   
    09-Jun-2016 08:49:10    67.2    0.01       2.7   
    09-Jun-2016 04:12:00    58.8     NaN       NaN   

TT = rmmissing(TT)
TT=10×4 timetable
            Time            Temp    Rain    WindSpeed
    ____________________    ____    ____    _________

    09-Jun-2016 06:01:04      73    0.01       2.3   
    09-Jun-2016 07:59:23      59    0.08       0.9   
    09-Jun-2016 09:53:57      59    0.03       3.4   
    09-Jun-2016 09:53:57      67    0.03       3.4   
    09-Jun-2016 09:53:57      67    0.03       3.4   
    09-Jun-2016 08:49:10      62    0.01       2.7   
    09-Jun-2016 08:49:10    75.8    0.01       2.7   
    09-Jun-2016 08:49:10      82    0.01       2.7   
    09-Jun-2016 05:03:11    66.2    0.05         3   
    09-Jun-2016 08:49:10    67.2    0.01       2.7   

Ordenar el horario y determinar si es regular

Determine si está ordenado.TT A continuación, ordene el horario en sus tiempos de fila utilizando la función.sortrows

TF = issorted(TT)
TF = logical
   0

TT = sortrows(TT)
TT=10×4 timetable
            Time            Temp    Rain    WindSpeed
    ____________________    ____    ____    _________

    09-Jun-2016 05:03:11    66.2    0.05         3   
    09-Jun-2016 06:01:04      73    0.01       2.3   
    09-Jun-2016 07:59:23      59    0.08       0.9   
    09-Jun-2016 08:49:10      62    0.01       2.7   
    09-Jun-2016 08:49:10    75.8    0.01       2.7   
    09-Jun-2016 08:49:10      82    0.01       2.7   
    09-Jun-2016 08:49:10    67.2    0.01       2.7   
    09-Jun-2016 09:53:57      59    0.03       3.4   
    09-Jun-2016 09:53:57      67    0.03       3.4   
    09-Jun-2016 09:53:57      67    0.03       3.4   

Determine si es regular.TT Un horario regular tiene el mismo intervalo de tiempo entre los tiempos de fila consecutivos. Incluso un horario ordenado puede tener pasos de tiempo que no son uniformes.

TF = isregular(TT)
TF = logical
   0

Mostrar las diferencias entre los tiempos de fila.

diff(TT.Time)
ans = 9x1 duration array
   00:57:53
   01:58:19
   00:49:47
   00:00:00
   00:00:00
   00:00:00
   01:04:47
   00:00:00
   00:00:00

Eliminar filas duplicadas

Los horarios pueden tener filas duplicadas. Las filas de horarios son duplicadas si tienen los mismos tiempos de fila y los mismos valores de datos. En este ejemplo, las dos últimas filas de son duplicados.TT

Para eliminar las filas duplicadas, utilice la función. Devuelve las filas únicas y las ordena por sus tiempos de fila.uniqueunique

TT = unique(TT)
TT=9×4 timetable
            Time            Temp    Rain    WindSpeed
    ____________________    ____    ____    _________

    09-Jun-2016 05:03:11    66.2    0.05         3   
    09-Jun-2016 06:01:04      73    0.01       2.3   
    09-Jun-2016 07:59:23      59    0.08       0.9   
    09-Jun-2016 08:49:10      62    0.01       2.7   
    09-Jun-2016 08:49:10    67.2    0.01       2.7   
    09-Jun-2016 08:49:10    75.8    0.01       2.7   
    09-Jun-2016 08:49:10      82    0.01       2.7   
    09-Jun-2016 09:53:57      59    0.03       3.4   
    09-Jun-2016 09:53:57      67    0.03       3.4   

Buscar filas con duplicar tiempos y datos diferentes

Los horarios pueden tener filas con tiempos de fila duplicados pero valores de datos diferentes. En este ejemplo, tiene varias filas con los mismos tiempos de fila pero valores diferentes.TT

Busque las filas que tienen tiempos de fila duplicados. Primero, ordene los tiempos de fila y encuentre tiempos consecutivos que no tengan ninguna diferencia entre ellos. Los tiempos sin diferencia entre ellos son los duplicados. Vuelva a indexar el vector de los tiempos de fila y devuelva un conjunto único de veces que identifique los tiempos de fila duplicados.TT

dupTimes = sort(TT.Time); TF = (diff(dupTimes) == 0); dupTimes = dupTimes(TF); dupTimes = unique(dupTimes)
dupTimes = 2x1 datetime array
   09-Jun-2016 08:49:10
   09-Jun-2016 09:53:57

Índice en el cronograma para mostrar las filas con tiempos de fila duplicados. Al indexar los tiempos, el calendario de salida contiene todas las filas con los tiempos de fila coincidentes.

TT(dupTimes,:)
ans=6×4 timetable
            Time            Temp    Rain    WindSpeed
    ____________________    ____    ____    _________

    09-Jun-2016 08:49:10      62    0.01       2.7   
    09-Jun-2016 08:49:10    67.2    0.01       2.7   
    09-Jun-2016 08:49:10    75.8    0.01       2.7   
    09-Jun-2016 08:49:10      82    0.01       2.7   
    09-Jun-2016 09:53:57      59    0.03       3.4   
    09-Jun-2016 09:53:57      67    0.03       3.4   

Seleccione primera y última fila con duplicar tiempos

Seleccione la primera y la última de las filas con tiempos de fila duplicados utilizando las funciones y.uniqueretime

En primer lugar, cree un vector de tiempos de fila únicos desde el uso de la función.TTunique

uniqueTimes = unique(TT.Time);

Seleccione la primera fila de cada conjunto de filas que tengan tiempos duplicados.

TT2 = retime(TT,uniqueTimes)
TT2=5×4 timetable
            Time            Temp    Rain    WindSpeed
    ____________________    ____    ____    _________

    09-Jun-2016 05:03:11    66.2    0.05         3   
    09-Jun-2016 06:01:04      73    0.01       2.3   
    09-Jun-2016 07:59:23      59    0.08       0.9   
    09-Jun-2016 08:49:10      62    0.01       2.7   
    09-Jun-2016 09:53:57      59    0.03       3.4   

Seleccione las últimas filas de cada conjunto de filas que tienen tiempos duplicados. Especifique el método para copiar los datos de la última fila.'previous'retime Cuando se especifica, se inicia al final del vector de tiempos de fila y se detiene cuando encuentra un tiempo de fila duplicado.'previous'retime A continuación, copia los datos de esa fila.

TT2 = retime(TT,uniqueTimes,'previous')
TT2=5×4 timetable
            Time            Temp    Rain    WindSpeed
    ____________________    ____    ____    _________

    09-Jun-2016 05:03:11    66.2    0.05         3   
    09-Jun-2016 06:01:04      73    0.01       2.3   
    09-Jun-2016 07:59:23      59    0.08       0.9   
    09-Jun-2016 08:49:10      82    0.01       2.7   
    09-Jun-2016 09:53:57      67    0.03       3.4   

Agregar datos de todas las filas con tiempos duplicados

Agregar datos de filas que tienen tiempos de fila duplicados. Por ejemplo, puede calcular los medios de varias mediciones de la misma cantidad tomadas al mismo tiempo.

Calcule la temperatura media, las lluvias y la velocidad del viento para las filas con tiempos de fila duplicados utilizando la función.retime

TT = retime(TT,uniqueTimes,'mean')
TT=5×4 timetable
            Time            Temp     Rain    WindSpeed
    ____________________    _____    ____    _________

    09-Jun-2016 05:03:11     66.2    0.05         3   
    09-Jun-2016 06:01:04       73    0.01       2.3   
    09-Jun-2016 07:59:23       59    0.08       0.9   
    09-Jun-2016 08:49:10    71.75    0.01       2.7   
    09-Jun-2016 09:53:57       63    0.03       3.4   

Hacer regular el horario

Crear un horario regular usando.retime Interpolar los datos en un vector de tiempo por hora regular. Para utilizar la interpolación lineal, especifique.'linear' Cada tiempo de fila comienza en la hora, y hay un intervalo de una hora entre los tiempos de fila consecutivos.TT

TT = retime(TT,'hourly','linear')
TT=6×4 timetable
            Time             Temp       Rain      WindSpeed
    ____________________    ______    ________    _________

    09-Jun-2016 05:00:00    65.826      0.0522     3.0385  
    09-Jun-2016 06:00:00    72.875    0.010737     2.3129  
    09-Jun-2016 07:00:00    66.027    0.044867     1.6027  
    09-Jun-2016 08:00:00    59.158    0.079133     0.9223  
    09-Jun-2016 09:00:00    70.287    0.013344     2.8171  
    09-Jun-2016 10:00:00    62.183    0.031868     3.4654  

En lugar de usar un paso de tiempo predefinido como, puede especificar un paso de tiempo propio.'hourly' Para especificar un paso de tiempo de 30 minutos, use el argumento de entrada y el argumento de par nombre-valor.'regular''TimeStep' Puede especificar un paso de tiempo de cualquier tamaño como un valor de duración o duración del calendario.

TT = retime(TT,'regular','linear','TimeStep',minutes(30))
TT=11×4 timetable
            Time             Temp       Rain      WindSpeed
    ____________________    ______    ________    _________

    09-Jun-2016 05:00:00    65.826      0.0522     3.0385  
    09-Jun-2016 05:30:00     69.35    0.031468     2.6757  
    09-Jun-2016 06:00:00    72.875    0.010737     2.3129  
    09-Jun-2016 06:30:00    69.451    0.027802     1.9578  
    09-Jun-2016 07:00:00    66.027    0.044867     1.6027  
    09-Jun-2016 07:30:00    62.592       0.062     1.2625  
    09-Jun-2016 08:00:00    59.158    0.079133     0.9223  
    09-Jun-2016 08:30:00    64.722    0.046239     1.8697  
    09-Jun-2016 09:00:00    70.287    0.013344     2.8171  
    09-Jun-2016 09:30:00    66.235    0.022606     3.1412  
    09-Jun-2016 10:00:00    62.183    0.031868     3.4654  

Extraer datos de horarios regulares

Puede exportar los datos de horario para utilizarlos con funciones para analizar datos que se espacian regularmente en el tiempo. Por ejemplo, la caja de herramientas de Econometrics™ y la caja de herramientas de procesamiento de señal™ tienen funciones que puede utilizar para un análisis adicional sobre datos espaciados regularmente.

Extraiga los datos de horario como una matriz. Puede usar la propiedad para devolver los datos como una matriz cuando se pueden concatenar las variables de tabla.Variables

A = TT.Variables
A = 11×3

   65.8260    0.0522    3.0385
   69.3504    0.0315    2.6757
   72.8747    0.0107    2.3129
   69.4507    0.0278    1.9578
   66.0266    0.0449    1.6027
   62.5923    0.0620    1.2625
   59.1579    0.0791    0.9223
   64.7224    0.0462    1.8697
   70.2868    0.0133    2.8171
   66.2348    0.0226    3.1412
      ⋮

equivale a usar la sintaxis de llave, para acceder a todas las variables.TT.VariablesTT{:,:}

A2 = TT{:,:}
A2 = 11×3

   65.8260    0.0522    3.0385
   69.3504    0.0315    2.6757
   72.8747    0.0107    2.3129
   69.4507    0.0278    1.9578
   66.0266    0.0449    1.6027
   62.5923    0.0620    1.2625
   59.1579    0.0791    0.9223
   64.7224    0.0462    1.8697
   70.2868    0.0133    2.8171
   66.2348    0.0226    3.1412
      ⋮

Consulte también

| | | | | | | | |

Temas relacionados