【发布时间】:2019-01-02 16:35:27
【问题描述】:
在我的 R 数据集中有一个 data$date 变量,由两种不同的文字组成:有些是 dd-mmm-yy(例如“14-nov -17") 和其他是 ddMMMyyyy(例如“14APR2016”)。
我在这里卡住了。我怎样才能让它们都变成日期格式?
谢谢
【问题讨论】:
在我的 R 数据集中有一个 data$date 变量,由两种不同的文字组成:有些是 dd-mmm-yy(例如“14-nov -17") 和其他是 ddMMMyyyy(例如“14APR2016”)。
我在这里卡住了。我怎样才能让它们都变成日期格式?
谢谢
【问题讨论】:
一个选项是parse_date_time from lubridate,它可以采用多种Date 格式
library(lubridate)
parse_date_time(v1, c("%d-%b-%y", "%d%b%Y"))
#[1] "2017-11-14 UTC" "2016-04-14 UTC"
或者使用来自anytime 的anydate。但是,应用anydate,检查是否所有formats 都已经存在
library(anytime)
getFormats()
如果缺少某些formats,请使用addFormats添加它
addFormats("%d-%b-%y")
然后在日期的列/向量上应用anydate
anydate(v1)
#[1] "2017-11-14" "2016-04-14"
v1 <- c("14-nov-17", "14APR2016")
【讨论】:
另一个选项,如果你想使用 base R 和 like 正则表达式:
data$date <- as.Date(sub('(\\d{2})(\\w{3})(\\d{2})(\\d{2})', '\\1-\\2-\\4', data$date),
format = "%d-%b-%y")
【讨论】: