2015-09-14 20 views
7

ho caricato un file sas7bdat utilizzando il pacchetto sas7bdat, ma le date vengono convertiti in un num come questo:sas7bdat formato della data formato della data R

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

ho cercato

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

come accennato here ma è sbagliato. Non ho accesso a SAS ma le date dovrebbero essere intorno all'anno 2006.

+2

'as.Date (sas, origine = "1960/01/01")' questo funziona bene. – SabDeM

+1

POSIXct memorizza le date come il numero di secondi dall'origine. Le date SAS sono il numero di giorni dall'origine. Questa è la fonte della discrepanza. Puoi usare 'as.Date', o usare' as.POSIXct' con 'sas * 3600' (3600 secondi al giorno). Personalmente, userei 'as.Date' poiché le tue date SAS non sono specifiche per il secondo. – Benjamin

+0

@SabDeM + Benjamin Funziona, grazie – spore234

risposta

9

Come il mio commento precedente, ecco un esempio funzionante, in cui l'argomento origin è impostato in questo modo a causa di una specifica impostazione SAS, che imposta la data di origine per 1960-01-01, here informazioni:

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

Ho una domanda aggiuntiva, forse puoi aiutarmi: nei miei dati R c'è una colonna per i quarti, ma il suo intervallo è da 6 -19 (non 1-4 come si potrebbe intuire), come posso convertire questo formato? Non ho idea di come questo è calcolato e non conosco i dati originali sas. – spore234

+0

@ spore234 Mi dispiace ma non posso aiutarti, forse è una sorta di SAS specifico (come l''origine' nel mio esempio), prova a fare una nuova domanda e non dimenticare di mettere alcuni dati per giocare con perché ho qualche idea, forse con il pacchetto 'lubridate'. – SabDeM