2011-11-21 41 views
7

Tôi đang làm việc trong R và tôi cần phải thay đổi từ một cột trong định dạngThay đổi kể từ ngày và định dạng giờ để định dạng số

9/27/2011 3:33:00 PM 

sang một định dạng giá trị. Trong Excel tôi có thể sử dụng chức năng value() nhưng tôi không biết làm thế nào để làm điều đó trong R.

Dữ liệu của tôi trông như thế này:

9/27/2011 15:33 a 1 5 9 
9/27/2011 15:33 v 2 6 2 
9/27/2011 15:34 c 3 7 1 
+3

Để có câu trả lời hoàn chỉnh, hãy cho chúng tôi kết quả đầu ra của 'dput (yourData)' để chúng tôi có thể tạo lại chính xác đối tượng dữ liệu của bạn. Câu trả lời được đưa ra sẽ khác nhau tùy thuộc vào loại cột, vì nó có thể là một yếu tố hoặc ký tự. Nếu nó là trong thực tế đã là một ngày hoặc cột POSIX, một cái gì đó như 'as.numeric()' nên làm việc tôi nghĩ. Ví dụ:> 'as.numeric (Sys.time()) [1] 1321895128' – Chase

Trả lời

21

Để chuyển đổi một chuỗi thành dạng ngày R, sử dụng as.POSIXct - sau đó bạn có thể ép buộc nó vào một giá trị số sử dụng as.numeric:

> x <- as.POSIXct("9/27/2011 3:33:00 PM", format="%m/%d/%Y %H:%M:%S %p") 
> x 
[1] "2011-09-27 03:33:00 BST" 
> as.numeric(x) 
[1] 1317090780 

giá trị bạn nhận được cho biết số giây kể từ khi một ngày tùy ý, thường 1970/01/01. Lưu ý rằng điều này khác với Excel, trong đó một ngày được lưu trữ là số ngày kể từ ngày tùy ý (1/1/1900 nếu bộ nhớ của tôi phục vụ tốt cho tôi - Tôi cố gắng không sử dụng Excel nữa.)

biết thêm thông tin, xem ?DateTimeClasses

3

Đây là hữu ích cho tôi:

> test=as.POSIXlt("09/13/2006", format="%m/%d/%Y") 
> test 
[1] "2006-09-13" 
> 1900+test$year 
[1] 2006 
> test$yday 
[1] 255 
> test$yday/365 
[1] 0.6986301 
> 1900+test$year+test$yday/366 
[1] 2006.697 

bạn có thể sử dụng cách tiếp cận tương tự nếu bạn cần số ngày như trong Excel.

Các vấn đề liên quan