2013-07-08 8 views
16

Chciałbym konwertować daty z formatu YYYYMMDD na klasę Data.Konwersja ciągu yyyymmdd do klasy Date w R

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

Próbowałem:

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

I pojawia się następujący błąd:

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

Jaki byłby poprawny sposób, aby ustawić ten format?

Odpowiedz

13

Musisz podać kolumnę Date, a nie całą data.frame.

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

A co, jeśli nie chcemy myślników ('-') – d8aninja

+2

Tak właśnie zaczynał się OP. Daty są drukowane za pomocą łączników w R. Jeśli ich nie chcesz, możesz albo zrobić własną metodę drukowania (prawdopodobnie nie to, czego szukasz), albo przekonwertować je na znak: 'format (myDates,"% Y% m % d ")'. – GSee

+0

Tego właśnie szukałem - dzięki. – d8aninja

3

Klasyczne 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

Dodatkowa konwersja do postaci działa na mnie:

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

Bez konwersji występuje następujący błąd:

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

inny błąd ale ten mig ht help, działa również dla POSIXct, wklejać datę i godziny, format% Y% m% d% H