我面临着日期格式化问题,无法找到解决方案。这是代码 - 第二个日期不是我想要的格式。
date1
#[1] "01. Nov 11"
ndate1 <- as.Date(date1, "%d. %B %y")
ndate1
#[1] "2011-11-01"
date2
#[1] "26-May-13"
ndate2 <- as.Date(date2, "%d-%B-%y")
ndate2
#[1] NA
答案 0 :(得分:1)
这很可能是由于与区域设置不兼容。如果Sys.getlocale("LC_TIME")
的输出与英语设置不对应,例如"en_US.UTF-8"
或"en_GB.UTF-8"
,则缩写“May”(巧合的是,在这种情况下甚至不是缩写)在大多数(所有?)其他设置中无法识别。相比之下,“Nov”是11月份的几种语言的有效缩写。这可以解释为什么date1
的第一个案例不会造成麻烦。
我们可以试试这个:
Sys.setlocale("LC_TIME", "en_US.UTF-8")
date2 <- "26-May-13"
ndate2 <- as.Date(date2, "%d-%b-%y")
ndate2
#[1] "2013-05-26"
答案 1 :(得分:1)
您可以使用?常量页面上的示例确定语言环境中的完整或缩写月份名称:
format(ISOdate(2000, 1:12, 1), "%b")
每次?strptime
输入时,您可以使用"%B"
或"%b"
作为缩写或完整名称。