嘗試TimeData$DEPARTURE_TIME - TimeData$LAB_TIME
?
這取決於您的xxx_TIME
列是字符串還是將它們轉換爲日期時間。
假設他們是字符串(他們已經使用read.csv
或類似的東西讀過);然後將它們轉換爲日期時間對象可以使用as.POSIXct
(見?as.POSIXct
和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
小時(見?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
是這些列的字符串或日期(在讀)? – 2012-02-21 05:15:52