2013-11-26 12 views
5

Tôi đang cố gắng chuyển đổi dữ liệu của mình sang định dạng ngày khác.Làm thế nào để chuyển đổi yyyy-mm-dd sang ngày trong năm trong R?

ví dụ từ 2010/12/31 đến 2010365

Tôi đã thử mã dưới đây nhưng nó đã cho tôi một cái gì đó khác nhau (ví dụ 359 360 361 362 363 364 365). Tôi có dữ liệu của mình từ năm 2000 đến 2010.

dayofyear <- strptime(date, format="%Y-%m-%d")$yday + 1 

Ai đó có thể giúp bạn?

Rất cám ơn.

+0

opss ... yup. Xin lỗi vì điều đó. – Sofea

Trả lời

5
d <- as.POSIXlt("2010-12-31", format="%Y-%m-%d") 
d$yday + 1 
# 365 
paste0(1900 + d$year, d$yday + 1) 
# 2010365 

Cập nhật: đọc từ file txt:

t <- read.table(file = "file.txt", header = TRUE, sep = ";", dec = ",") 
    # make settings according to file format 

Sau đó, bạn c truy cập giá trị cột theo số t$column_name hoặc t[,column_number] và bạn thay thế "2010-12-31" theo một trong các biểu thức này và chính xác là vậy.

+0

Cảm ơn @Tomas. Cố gắng tìm ra cách gọi một tệp txt vào mã vì tất cả các ngày từ 2000-01-01 đến 2010-12-31 đều ở dạng tệp txt. Bằng cách này, 2010-12-31 sẽ là 2010365. :) – Sofea

+0

tiêu chuẩn POSIXlt là chỉ mục dựa trên 0 chứ không phải 1 dựa trên, vì vậy 2010-01-01 là ngày thứ 0 của năm. – Justin

+0

@Sofea đọc từ tệp văn bản rất dễ, cập nhật câu trả lời của tôi – TMS

5
library(lubridate) 
date <- ymd("2010-12-31") 
paste0(year(date), yday(date)) 
# [1] "2010365" 
+0

Cảm ơn bạn rất nhiều @Henrik. – Sofea

+0

Rất vui được trợ giúp! Chúc mừng. – Henrik

+5

Có thể không cài đặt thư viện mới, xem câu trả lời của tôi. – TMS

16

Trong cơ sở r:

format(as.Date('2010-12-31'), format='%Y%j') 

Hoặc:

strftime('2010-12-31', format='%Y%j') 
Các vấn đề liên quan