我正在尝试将带有荷兰日期的字符串变量转换为日期变量原始变量的一些示例值(date.string):"18 sep.2016","29 mei 2014","7 mrt.2016"我试过:
df$date <- as.Date(df$dta.string, format = "%d %h %Y", locale = "dutch")
Run Code Online (Sandbox Code Playgroud)
显然我犯了一个错误,因为我只在我的新专栏中得到NA,有人提出任何建议吗?
你可以做到
df <- data.frame(dta.string = c("18 sep. 2016", "29 mei 2014", "7 mrt. 2016"))
oldloc <- Sys.getlocale("LC_TIME")
Sys.setlocale("LC_TIME", "dutch")
df$dta.string <- sub("([a-z]{3})(?!\\.)", "\\1.", df$dta.string, perl=TRUE)
as.Date(df$dta.string, format = "%d %h. %Y")
# [1] "2016-09-18" "2014-05-29" "2016-03-07"
Sys.setlocale("LC_TIME", oldloc)
Run Code Online (Sandbox Code Playgroud)
lubridate::dmy有一个locale参数,您可以在其中指定用于评估字符串的语言环境,而无需更改您的实际语言环境。它还可以切断不一致的分隔符,这很方便:
lubridate::dmy(c("18 sep. 2016", "29 mei 2014", "7 mrt. 2016"), locale = 'nl_NL.UTF-8')
## [1] "2016-09-18" "2014-05-29" "2016-03-07"
Run Code Online (Sandbox Code Playgroud)