Hãy thử TimeData$DEPARTURE_TIME - TimeData$LAB_TIME
?
Tùy thuộc vào việc các cột xxx_TIME
của bạn có là chuỗi hay bạn đã chuyển đổi chúng thành ngày giờ hay không.
Giả sử chúng là các chuỗi (chúng đã được đọc bằng cách sử dụng read.csv
hoặc một cái gì đó tương tự); sau đó chuyển đổi chúng sang ngày thời gian đối tượng mà bạn có thể sử dụng as.POSIXct
(xem ?as.POSIXct
và 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')
Lưu ý format
luận: trông giống như bạn đang ở tháng ngày/giờ/năm: phút (25 giờ đồng hồ) định dạng. Xem ?strptime
để biết thêm thông tin về định dạng ngày.
Sau đó, để tính toán sự khác biệt, bạn có thể làm một trong hai:
diffs <- TimeData$DEPARTURE_TIME - TimeData$LAB_TIME
mà chọn các đơn vị thời gian thích hợp cho bạn, OR để xác định giờ bạn có thể sử dụng difftime
(xem ?difftime
):
# like saying DEPARTURE_TIME-LAB_TIME but more control over the output
diffs <- difftime(TimeData$DEPARTURE_TIME,TimeData$LAB_TIME,units="hours")
Đối tượng kết quả diffs
trông giống như sau:
> diffs
Time differences in hours
[1] 3.816667 3.816667 6.016667 6.016667 8.216667 8.216667 6.150000
attr(,"tzone")
[1] ""
Để chỉ trích xuất phần số, hãy sử dụng as.numeric(diffs)
. Để chuyển đổi này vào một vector giờ và một vector phút ... tốt, phút 60 đến một giây, vv:
# 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)
Đem lại cho bạn:
> diffs.hours
[1] 3 3 6 6 8 8 6
> diffs.minutes
[1] 49 49 1 1 13 13 9
Là những cột dây hoặc ngày (trong R)? –