如何转换荷兰字符串日期?

Ben*_*amp 3 r date

我正在尝试将带有荷兰日期的字符串变量转换为日期变量原始变量的一些示例值(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,有人提出任何建议吗?

luk*_*keA 5

你可以做到

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)

  • 哎呀!是的.在`w_strptime_internal()`/`strptime_internal()`R正在解析数字本身.我可能会捅R-devel邮件列表,看看他们是否需要PR来更改`strptime`文档.我曾假设它直接调用了ISO例程,但它们对输入字符串进行了更多的处理. (2认同)

ali*_*ire 5

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)