如何修改日期值?

时间:2019-03-06 09:41:19

标签: r date

如何修改原始日期值。例如。

> DF2
  Date     
1 11012018  
2 7312014  
3 6102015
4 10202017  

在修改后的日期中,值为“ /”的

> DF2
  Date     
1 11/01/2018  
2 7/31/2014  
3 6/10/2015
4 10/20/2017 

3 个答案:

答案 0 :(得分:1)

lubridate用于所有与日期和时间相关的任务

> lubridate::mdy(c("11012018", "7/31/2014"))
[1] "2018-11-01" "2014-07-31"

如果需要,您也可以format

format(lubridate::mdy(c("11012018", "7/31/2014")), "%m/%d/%Y")
[1] "11/01/2018" "07/31/2014"

假设:您的日期采用月-日期-年格式。另外,您可以使用其他lubridate函数

答案 1 :(得分:1)

我们也可以使用(假设您只需要添加一个新的分隔符。无论如何,您都可以转换回日期时间类型):

new<-gsub("([0-9]{,2})([0-9]{2})([0-9]{4})","\\1 \\2 \\3",df$Date)
gsub(" ","/",new)
#[1] "11/01/2018" "7/31/2014"  "6/10/2015"  "10/20/2017" 

编辑: 如@ jay.sf所建议的,更普遍

test4<-gsub("(^[0-1]?\\d)([0-3]?\\d)(\\d{4}$)","\\1 \\2 \\3",df$Date)
gsub(" ","/",test4)
#[1] "11/01/2018" "7/31/2014"  "6/10/2015"  "10/20/2017"

这是为了说明以下日期格式:

test3<-c("11012018", "1112015", "7312014", "7312014", "10202017", "772007", "772007", 
         "7072007")

答案 2 :(得分:0)

一种可能的解决方案可能是:

df <- transform(df, V1 = as.Date(as.character(V1), "%d%m%Y"))

另外一种可以转换为所需的mm / dd / yyyy格式的格式如下:

df <- data.frame(lapply(df, function(x) as.Date(as.character(x), "%m%d%Y")))

这两种解决方案都是通过基本R包实现的。