2015-09-14 40 views
7

Tôi tải một tập tin sas7bdat sử dụng gói sas7bdat, nhưng những ngày được chuyển đổi thành một num như thế này:định dạng ngày sas7bdat sang định dạng ngày R

sas <- c(16922, 17045, 17014, 16983) 

tôi đã cố gắng

rPOSIX <- as.POSIXct(sas,origin='1960-01-01') 

như đã đề cập here nhưng nó sai. Tôi không có quyền truy cập vào SAS nhưng ngày phải vào khoảng năm 2006.

+2

'as.Date (sas, origin = "1960/01/01") 'này hoạt động tốt. – SabDeM

+1

POSIXct lưu trữ ngày là số giây kể từ gốc. Ngày SAS là số ngày kể từ ngày xuất xứ. Đây là nguồn gốc của sự khác biệt. Bạn có thể sử dụng 'as.Date' hoặc sử dụng' as.POSIXct' với 'sas * 3600' (3600 giây mỗi ngày). Cá nhân, tôi sẽ sử dụng 'as.Date' vì ngày SAS của bạn không cụ thể cho lần thứ hai. – Benjamin

+0

@SabDeM + Benjamin Nó hoạt động, cảm ơn – spore234

Trả lời

9

Như nhận xét trước đây của tôi, đây là ví dụ làm việc, trong đó đối số origin được đặt như vậy vì cài đặt SAS cụ thể ngày xứ 1960-01-01, here thông tin:

as.Date(sas, origin = "1960-01-01") 
[1] "2006-05-01" "2006-09-01" "2006-08-01" "2006-07-01" 
+0

Tôi có một câu hỏi bổ sung, có thể bạn có thể giúp tôi: Trong dữ liệu R của tôi có một cột cho các khu, nhưng phạm vi của nó là từ 6 -19 (không phải 1-4 như bạn có thể đoán), làm thế nào tôi có thể chuyển đổi định dạng này? Tôi không có đầu mối làm thế nào điều này được tính toán và không biết dữ liệu gốc sas. – spore234

+0

@ spore234 Tôi xin lỗi nhưng tôi không thể giúp bạn, có thể nó là một loại SAS cụ thể (như 'origin' trong ví dụ của tôi), hãy thử hỏi một câu hỏi mới và đừng quên đặt một số dữ liệu để chơi bởi vì tôi có một số ý tưởng, có thể với gói 'lubridate'. – SabDeM

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