2013-07-08 99 views
16

我想將這些日期的格式爲YYYYMMDD轉換爲Date類。將yyyymmdd字符串轉換爲R中的Date類

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

我想:

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

而且我得到以下錯誤:

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

什麼是正確的方法來設置此格式?

回答

13

您需要提供Date列,而不是整個data.frame

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

如果我們不想破折號('-') – d8aninja

+2

那就是OP開始的。日期在R中用連字符打印。如果你不需要它們,你可以使用自己的打印方法(可能不是你想要的),或者將它們轉換爲字符:'format(myDates,「%Y%m %d「)'。 – GSee

+0

這就是我正在尋找的 - 謝謝。 – d8aninja

3

經典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

一個額外的轉換字符爲我工作:

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

沒有出現以下錯誤的轉換:

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

不同的錯誤但是這個mig ht幫助,也適用於POSIXct,粘貼日期和時間,格式%Y%m%d%H