2009-02-24 46 views
14

Tôi đang làm việc với một tập dữ liệu khảo sát. Nó có hai chuỗi vectors, startfinish, ghi rõ thời gian trong ngày khi cuộc phỏng vấn được bắt đầu, và đã hoàn thành, tương ứng.thực hành tốt nhất về thời gian xử lý trong R là gì?

Chúng là character chuỗi trông giống như: "9:24 am", "12:35 pm", v.v. Tôi đang cố tính thời lượng của cuộc phỏng vấn dựa trên hai cuộc phỏng vấn này. Cách nào là tốt nhất để thực hiện việc này?

Tôi biết rằng, cho những ngày, có rất nhiều classe s hoặc function s như as.date(), as.Date(), chron(), hoặc as.POSIXct(). Vì vậy, tôi đã tìm kiếm một cái gì đó như as.time(), nhưng không thể tìm thấy nó. Nên tôi chỉ thêm một ngày làm-up và chuyển đổi toàn bộ điều vào một POSIX() ngày thời gian class, sau đó sử dụng difftime()?

các thực hành tốt nhất của xử lý thời gian trong R là gì?

Trả lời

15

Bạn cần phải sử dụng strptime() để chuyển đổi chuỗi sang một ngày khác. Ví dụ:

strptime("9:24 am",format="%I:%M %p") 

Sau đó, bạn có thể mất sự khác biệt chỉ bằng cách tham gia một cách xa khác:

strptime("9:24 am",format="%I:%M %p")-strptime("12:14 am",format="%I:%M %p") 
Time difference of 9.166667 hours 

Bạn có thể lưu trữ này và sau đó làm một as.numeric() nếu bạn chỉ muốn số ra, nếu không bạn có thể vượt qua các đối tượng thời gian.

Hy vọng điều này sẽ hữu ích!

+0

cập nhật bởi lubridate –

1

một lựa chọn là sử dụng biểu thức thông thường. nếu bạn không quen thuộc với chúng, chúng được sử dụng để phân tích chuỗi bằng cách sử dụng các mẫu. tôi sẽ nghiên cứu biểu thức thông thường và sau đó here are the functions in r

hy vọng nó sẽ giúp

0

thực hành tốt nhất là sử dụng lubridate gói

https://www.rdocumentation.org/packages/lubridate/versions/1.5.6/topics/hm

hm(c("09:10", "09:02", "1:10")) 
## [1] "9H 10M 0S" "9H 2M 0S" "1H 10M 0S 

Sau đó sử dụng difftime cho sự khác biệt trong các định dạng thời gian ngày tạo ở trên https://stat.ethz.ch/R-manual/R-devel/library/base/html/difftime.html

difftime(time1, time2, tz, 
     units = c("auto", "secs", "mins", "hours", 
        "days", "weeks")) 
Các vấn đề liên quan