R 如何将包含日期(YYYYMMDD)的数字变量转换为POSIXct格式变量

R 如何将包含日期(YYYYMMDD)的数字变量转换为POSIXct格式变量,r,R,我有一个数据框,其中一列是date,但它是一个数字。我想把它转换成POSIXct格式,但我不知道如何转换 我曾想过使用不同的函数(gsub,substr,等等),但据我所知,它们都不允许我在特定位置的数字之间添加“-” 我怎么做呢 例如,我有以下数据帧df1: df1<- data.frame(date=c(20160801,20160802,20160803), var1=c(4,56,76)) > df1 date var1 1

我有一个数据框,其中一列是
date
,但它是一个数字。我想把它转换成POSIXct格式,但我不知道如何转换

我曾想过使用不同的函数(
gsub
substr
,等等),但据我所知,它们都不允许我在特定位置的数字之间添加“-”

我怎么做呢

例如,我有以下数据帧
df1

df1<- data.frame(date=c(20160801,20160802,20160803),
                   var1=c(4,56,76))

> df1
      date var1
1 20160801    4
2 20160802   56
3 20160803   76

我该怎么做?

使用
lubridate
可以很容易地做到这一点

库(tidyverse)
图书馆(lubridate)
df1%
变异(日期=ymd(日期))
使用基本R

df1-df1
日期变量1
1 20160801    4
2 20160802   56
3 20160803   76
将函数
as.Date.character
tryFormats
参数一起使用,该参数的定义方式与当前数据的定义方式相同。在这种情况下,
%Y%m%d“

df1$日期df1
日期变量1
1 2016-08-01    4
2 2016-08-02   56
3 2016-08-03   76

不必添加
-
或加载额外的包,只需指定一种不带空格的格式-
为.Date(as.character(df1$Date),format=“%Y%m%d”)
如果您确实想要类
POSIXct
为.POSIXct(strtime(as.character(df1$Date),%Y%m%d))
。但是我怀疑类日期的对象也可以。@neilfws-为什么额外的
strtime
?-只需直接运行-
as.POSIXct(as.character(df1$date),format=“%Y%m%d”)
@thelatemail是的,也是:)我最初尝试时省略了“format=,这会产生一个错误。是的!!谢谢你的评论!!我想我的帖子是重复的。。。我没有找到你提到的帖子。。。我是否要删除我的帖子?
> df1
        date var1
1 2016-08-01    4
2 2016-08-02   56
3 2016-08-03   76