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为我工作。