as.Date从“ddmmmyyyy”转换时返回NA

我试图将string“2013-JAN-14”转换为date如下:

sdate1 <- "2013-JAN-14" ddate1 <- as.Date(sdate1,format="%Y-%b-%d") ddate1 

但是我得到:

 [1] NA 

我究竟做错了什么 ? 我应该为此安装一个软件包(我尝试安装chron)。

为我工作。 它不适合你的原因可能与你的系统区域设置有关。

?as.Date有以下说法:

 ## This will give NA(s) in some locales; setting the C locale ## as in the commented lines will overcome this on most systems. ## lct <- Sys.getlocale("LC_TIME"); Sys.setlocale("LC_TIME", "C") x <- c("1jan1960", "2jan1960", "31mar1960", "30jul1960") z <- as.Date(x, "%d%b%Y") ## Sys.setlocale("LC_TIME", lct) 

值得一试。

下面的解决scheme可能不适用于导致as.Date()返回NA的每一个问题,但是对于某些情况,也就是Datevariables以因子格式读取时,它确实有效。

只需使用stringsAsFactors = FALSE在.csv中阅读即可

 data <- read.csv("data.csv", stringsAsFactors = FALSE) data$date <- as.Date(data$date) 

在尝试(和失败)以我的系统区域设置解决NA问题后,此解决scheme为我工作。