2012-04-05 21 views
5

Xin lỗi cho câu hỏi đơn giản, nhưng tôi không thể tìm thấy trợ giúp cho loại ngày này.Ngày theo mẫu: 20120405

ngày 05 tháng 4 năm 2012 được lưu dưới dạng số như "20.120.405"

Làm thế nào tôi có thể chuyển đổi một vector của các giá trị đó vào ngày có thể sử dụng?

Trả lời

5

Bạn chỉ cần as.Date chức năng:

R> x = "20120405" 
R> as.Date(x, "%Y%m%d") 
[1] "2012-04-05" 

Nhìn vào tập tin trợ giúp: ?as.Date, nhưng về cơ bản

  • %Y nghĩa năm theo hình thức năm 2012, sử dụng %y cho 12.
  • %m là tháng.
  • %d trong ngày.

Nếu ngày của bạn có dấu tách, hãy nói, 2012-04-05, sau đó sử dụng một cái gì đó như: %Y-%m-%d. Ngoài ra, bạn có thể sử dụng:

R> strptime(x, "%Y%m%d") 
[1] "2012-04-05" 

Đặc biệt, bạn có thể vượt qua các vectơ của ngày để các chức năng này, vì vậy:

R> y = c("20120405", "20121212") 
R> as.Date(y, "%Y%m%d") 
[1] "2012-04-05" "2012-12-12" 
+0

Cảm ơn! Và cảm ơn tất cả! – user1314736

5

như thế này,

(foo <- as.Date("20120405", "%Y%m%d")) 
# "2012-04-05" 

và có thể bạn muốn format để nhận tháng được in ra

format(foo, "%Y %b %d") 
# "2012 Apr 05" 

Bạn có thể có một cái nhìn tại this page

3

Với strptime bạn có thể chuyển nó sang POSIXlt lớp và với as.Date bạn có thể chuyển nó sang một lớp Date sử dụng định dạng "%Y%m%d":

strptime("20120405",format="%Y%m%d") 
[1] "2012-04-05" 

as.Date("20120405",format="%Y%m%d") 
[1] "2012-04-05" 

Edit:

Nó không thực sự rõ ràng nếu bạn có ký tự "20120405" hoặc số 20120405. Trong trường hợp sau, bạn phải chuyển đổi sang ký tự đầu tiên với as.character(20120405)

+0

Cảm ơn! Đó là con số mà tôi nghĩ đã gây ra vấn đề. – user1314736

2

Bạn cũng có thể sử dụng lubridate gói:

library(lubridate) 
ymd("20120405") 
Các vấn đề liên quan