将yyyymmdd字符串转换为R中的日期类

将yyyymmdd字符串转换为R中的日期类,r,class,date,R,Class,Date,我想将格式为YYYYMMDD的这些日期转换为日期类 dates <- data.frame(Date = c("20130707", "20130706", "20130705", "20130704")) 设置此格式的正确方法是什么?您需要提供日期列,而不是整个数据.frame R> as.Date(dates[["Date"]], "%Y%m%d") [1] "2013-07-07" "2013-07-06" "2013-07-05" "2013-07-04" 经典R: &g

我想将格式为YYYYMMDD的这些日期转换为日期类

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

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

您需要提供
日期
列,而不是整个
数据.frame

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

> start_numeric <- as.Date('20170215', format = '%Y%m%d');
> start_numeric
[1] "2017-02-15"
> format(start_numeric, "%Y%m%d")
[1] "20170215"
>开始\u数字开始\u数字
[1] "2017-02-15"
>格式(以数字开头,“%Y%m%d”)
[1] "20170215"

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

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

dates使用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

date\u测试,如果我们不想要破折号(
-
),这就是OP开始的地方。日期是用R中的连字符打印的。如果不需要,可以创建自己的打印方法(可能不是您想要的),或者将其转换为字符:
格式(myDates,“%Y%m%d”)
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
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