Promedio/medio de horas de fecha y minutos ITSELF - datos incrustados no correspondientes

¿Cómo computo el tiempo medio/medio de una matriz de fecha que contiene horas y minutos?

rowMin = 
  20×1 datetime array
   09:00
   09:10
   09:00
   09:14
   09:59
   09:05
   09:00
   09:35
   13:15
   09:00
   09:00
   15:00
   09:35
   10:15
   14:10
   16:35
   09:00
   11:15
   09:00
   10:20

¿Cómo computar el tiempo medio/medio?

rowMin.Format='HH:mm'
mean(rowMin)

No funciona. Ni la conversión a la tabla y posteriormente el calendario:

rowMinTable=table(rowMin)
rowMinTimetable=table2timetable(rowMinTable)
dt = minutes(30);
output = retime(table2timetable(rowMinTable),'regular','linear','TimeStep',dt)

Además, convertir a datenum a compute mean y luego volver a la fecha no es la solución, ya que también utiliza las fechas (solo estoy interesado en la media de las horas y minutos HH:MM):

rowMin.Format='HH:mm';
rowMinDatenum=datenum(rowMin)
rowMinDatenumMean=mean(rowMinDatenum)
rowMinMean=datetime(rowMinDatenumMean,'ConvertFrom','datenum')

Pregunta hecha hace 3 años, 5 meses, 1 días - Por quantumquasar


3 Respuestas:

  • También, convertir a datenum a compute mean y luego volver a datetime no es la solución, ya que utiliza las fechas también (Yo soy Únicamente interesado en la media de las horas y minutos HH:MM)

    Por lo tanto, primero eliminar las fechas y luego calcular el promedio:

    % generating some random datetimes
    dtn = datenum('2000-01-01') + rand(100, 1) * ...
        (datenum('2020-12-31')-datenum('2000-01-01'));
    dt = datetime(dtn, 'convertfrom', 'datenum');
    
    % finding mean of times
    t = timeofday(dt); % elapsed time since midnight
    m = mean(t)
    datestr(m, 'hh:MM')
    

    Respondida el Dec 16, 2020 a las 13:21 - por binarybuilder

    Votos positivos: 0 | Votos negativos: 0

  • El problema en tu intento de calcular el promedio/medio de las horas y minutos en una matriz de fechas se debe a que estás tratando de calcular la media de una matriz de tipo datetime, lo cual no está soportado directamente en MATLAB.

    Sin embargo, puedes lograr el resultado deseado calculando manualmente la media de las horas y minutos por separado. Aquí te muestro cómo puedes hacerlo:

    matlab
    % Extraer horas y minutos de las fechas
    horas = hour(rowMin);
    minutos = minute(rowMin);
    
    % Calcular la media de las horas y minutos
    horaMedia = floor(mean(horas));
    minutoMedia = round(mean(minutos));
    
    % Crear un nuevo datetime con la hora y minuto media
    media = datetime('now','Format','HH:mm');
    media.Hour = horaMedia;
    media.Minute = minutoMedia;
    

    Con este código, primero extraemos las horas y minutos de la matriz de fechas. Luego calculamos la media de las horas y minutos por separado. Finalmente, creamos un nuevo datetime con la media de la hora y el minuto.

    Espero que esta solución te sea de ayuda. Si tienes alguna otra pregunta, no dudes en decirme.

    Respondida el Dec 17, 2020 a las 13:18 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Para calcular el tiempo promedio/medio de una matriz de fecha que contiene horas y minutos, puedes utilizar la función mean junto con la función minutes de la siguiente manera:

    
    import numpy as np
    from datetime import datetime
    
    

    Crear una matriz de fechas

    rowMin = np.array(['09:00', '09:10', '09:00', '09:14', '09:59', '09:05', '09:00', '09:35', '13:15', '09:00', '09:00', '15:00', '09:35', '10:15', '14:10', '16:35', '09:00', '11:15', '09:00', '10:20'])

    Convertir la matriz de fechas a objetos datetime

    rowMin_datetime = [datetime.strptime(time, '%H:%M') for time in rowMin]

    Calcular el tiempo promedio en minutos

    mean_minutes = np.mean([time.hour 60 + time.minute for time in rowMin_datetime])

    Convertir el promedio en minutos a un objeto datetime

    mean_time = datetime.fromtimestamp(mean_minutes
    60)

    Formatear el tiempo promedio como una cadena

    mean_time_str = mean_time.strftime('%H:%M') print(f"El tiempo promedio es: {mean_time_str}")

    Esto calculará el tiempo promedio como un objeto datetime y lo formateará como una cadena en el formato HH:MM.

    Respondida el Dec 17, 2020 a las 13:30 - por Gemini

    Votos positivos: 0 | Votos negativos: 0