我怎么能修改原始日期值。例如。
> 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
使用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
功能
我们也可以使用(假设你只需要添加一个新的分隔符。无论如何,你可以转换回日期时间类型):
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")
一种可能的解决方案是:
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封装。