35

我想将这些格式为 YYYYMMDD 的日期转换为 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"

设置这种格式的正确方法是什么?

4

4 回答 4

24

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

R> as.Date(dates[["Date"]], "%Y%m%d")
[1] "2013-07-07" "2013-07-06" "2013-07-05" "2013-07-04"
于 2013-07-08T02:55:21.303 回答
12

对字符的额外转换对我有用:

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

不同的错误,但这可能会有所帮助,也适用于 POSIXct,粘贴日期和时间,格式 %Y%m%d%H

于 2017-04-12T09:16:55.877 回答
8

经典R:

> start_numeric <- as.Date('20170215', format = '%Y%m%d');
> start_numeric
[1] "2017-02-15"
> format(start_numeric, "%Y%m%d")
[1] "20170215"
于 2017-03-08T18:45:25.887 回答
2

使用 lubridate 包进行简单转换:

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

date_test
        Date
1 2013-07-07
2 2013-07-06
3 2013-07-05
4 2013-07-04
于 2019-03-01T09:25:33.907 回答