我想字符串 “2013-JAN-14” 转换成日期如下转变:as.Date返回NA,同时从 'ddmmmyyyy'
sdate1 <- "2013-JAN-14"
ddate1 <- as.Date(sdate1,format="%Y-%b-%d")
ddate1
,但我得到:
[1] NA
我做错了什么?我应该为此安装一个软件包(我尝试安装chron)。
我想字符串 “2013-JAN-14” 转换成日期如下转变:as.Date返回NA,同时从 'ddmmmyyyy'
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)
值得一试。
下面的解决方案可能不适用于导致as.Date()返回NA的每个问题,但它对某些工作,即以因子格式读取Date变量时工作。
与stringsAsFactors该.csv只需阅读= FALSE
data <- read.csv("data.csv", stringsAsFactors = FALSE)
data$date <- as.Date(data$date)
试图(和失败),与我的系统语言环境来解决问题NA后,该解决方案为我工作。
我今天遇到了类似的NA问题,当我回到我的CSV文件时,发现Date单元格的格式化处于“自定义”模式而不是日期模式(在Excel中)。在我将其更改为日期后,'as.Date'命令工作得很好。我知道你的问题已经解决,但我只是想为这个问题提出另一种可能的情况。 – LearneR 2015-05-19 11:00:40