Try TimeData$DEPARTURE_TIME - TimeData$LAB_TIME
?
这取决于您是否xxx_TIME
列是字符串还是您是否已将它们转换为日期时间。
假设它们是字符串(它们已被使用读取read.csv
或类似的东西);然后将它们转换为您可以使用的日期时间对象as.POSIXct
(see ?as.POSIXct
and 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')
请注意format
参数:看起来你的格式是月/日/年小时:分钟(25 小时时钟)格式。看?strptime
有关日期格式的更多信息。
然后要计算差异,您可以执行以下任一操作:
diffs <- TimeData$DEPARTURE_TIME - TimeData$LAB_TIME
它会为您选择合适的时间单位,或者指定您可以使用的时间difftime
(see ?difftime
):
# like saying DEPARTURE_TIME-LAB_TIME but more control over the output
diffs <- difftime(TimeData$DEPARTURE_TIME,TimeData$LAB_TIME,units="hours")
结果对象diffs
看起来像这样:
> diffs
Time differences in hours
[1] 3.816667 3.816667 6.016667 6.016667 8.216667 8.216667 6.150000
attr(,"tzone")
[1] ""
要仅提取数字部分,请使用as.numeric(diffs)
。
要将其转换为小时向量和分钟向量...好吧,60 分钟转换为一秒,等等:
# 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)
给你:
> diffs.hours
[1] 3 3 6 6 8 8 6
> diffs.minutes
[1] 49 49 1 1 13 13 9