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ónminutes
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 formatoHH:MM
.Respondida el Dec 17, 2020 a las 13:30 - por Gemini
Votos positivos: 0 | Votos negativos: 0