2013-07-08 50 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