2013-07-08 20 views
16

Mi piacerebbe convertire queste date con il formato AAAAMMGG in una classe Date.Converti yyyymmdd stringa in data classe in R

dates <- data.frame(Date = c("20130707", "20130706", "20130705", "20130704")) 

ho provato:

dates <- as.Date(dates, "%Y%m%d") 

e ottengo il seguente errore:

Error in as.Date.default(dates, "%Y%m%d") : 
    do not know how to convert 'dates' to class "Date" 

Quale sarebbe il modo corretto di impostare questo formato?

risposta

13

È necessario fornire la colonna Date, non l'intero data.frame.

R> as.Date(dates[["Date"]], "%Y%m%d") 
[1] "2013-07-07" "2013-07-06" "2013-07-05" "2013-07-04" 
+0

E se non vogliamo i trattini ('-') – d8aninja

+2

Ecco come è iniziato OP. Le date vengono stampate con trattini in R. Se non le vuoi, puoi creare il tuo metodo di stampa (probabilmente non quello che cerchi) o convertirle in caratteri: 'format (myDates,"% Y% m % d ")'. – GSee

+0

Questo è quello che stavo cercando - grazie. – d8aninja

3

Classic R:

> start_numeric <- as.Date('20170215', format = '%Y%m%d'); 
> start_numeric 
[1] "2017-02-15" 
> format(start_numeric, "%Y%m%d") 
[1] "20170215" 
0

Una conversione in più per personaggi funziona per me:

dates<-as.Date(as.character(dates),format="%Y%m%d") 

Senza la conversione si verifica il seguente errore:

dates<-as.Date(dates,format="%Y%m%d") 
Error in as.Date.numeric(dates, format = "%Y%m%d") : 
    'origin' must be supplied 

errore diverso ma questa mig ht help, funziona anche per POSIXct, incolla data e ora, formato% Y% m% d% H