我有一个数据框,其中的一列是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
我想要这个:
> df1
date var1
1 2016-08-01 4
2 2016-08-02 56
3 2016-08-03 76
我该怎么做?
答案 0 :(得分:2)
您可以使用lubridate
轻松地做到这一点。
library(tidyverse)
library(lubridate)
df1<- data.frame(
date=c(20160801, 20160802, 20160803),
var1=c(4, 56, 76)
)
df1 %>%
mutate(date = ymd(date))
答案 1 :(得分:2)
使用基数R
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
将函数as.Date.character
与tryFormats
参数一起使用,该参数的定义与当前数据的定义方式相同。在这种情况下,"%Y%m%d"
。
df1$date <- as.Date.character(df1$date, tryFormats = "%Y%m%d")
> df1
date var1
1 2016-08-01 4
2 2016-08-02 56
3 2016-08-03 76