Probar TimeData$DEPARTURE_TIME - TimeData$LAB_TIME
?
Depende de si sus columnas xxx_TIME
son cadenas o si las ha convertido a fecha-hora.
Supongamos que son cadenas (se han leído usando read.csv
o algo similar); a continuación, convertirlos a fecha-hora objetos que se pueden utilizar as.POSIXct
(ver ?as.POSIXct
y strptime
):
# convert the string columns to dates
TimeData$DEPARTURE_TIME <- as.POSIXct(TimeData$DEPARTURE_TIME,
format='%m/%d/%Y %H:%M')
TimeData$LAB_TIME <- as.POSIXct(TimeData$LAB_TIME,
format='%m/%d/%Y %H:%M')
nota del argumento format
: parece que los suyos son en mes/día horas/año: minutos (25 de reloj h) formato. Consulte ?strptime
para obtener más información sobre los formatos de fecha.
entonces para calcular la diferencia, se puede hacer ya sea:
diffs <- TimeData$DEPARTURE_TIME - TimeData$LAB_TIME
que recoge las unidades de tiempo apropiados para usted, o para especificar las horas que puede utilizar difftime
(ver ?difftime
):
# like saying DEPARTURE_TIME-LAB_TIME but more control over the output
diffs <- difftime(TimeData$DEPARTURE_TIME,TimeData$LAB_TIME,units="hours")
El objeto resultante diffs
se ve así:
> diffs
Time differences in hours
[1] 3.816667 3.816667 6.016667 6.016667 8.216667 8.216667 6.150000
attr(,"tzone")
[1] ""
Para extraer solo la parte numérica, use as.numeric(diffs)
. convertir esto en un vector de horas y un vector minutos ... bueno, 60 minutos a una segunda, etc:
# use as.numeric(diffs) to retrieve just the vector.
# let's convert to hours & minutes...
diffs.hours <- floor(as.numeric(diffs))
diffs.minutes <- (as.numeric(diffs)%%1 * 60)
dándole:
> diffs.hours
[1] 3 3 6 6 8 8 6
> diffs.minutes
[1] 49 49 1 1 13 13 9
¿Son estas columnas cadenas o fechas (en I)? –