R as.从';转换时返回NA的日期;ddmmmyyyy';

R as.从';转换时返回NA的日期;ddmmmyyyy';,r,date,r-faq,R,Date,R Faq,我正在尝试将字符串“2013-1-14”转换为日期,如下所示: sdate1 <- "2013-JAN-14" ddate1 <- as.Date(sdate1,format="%Y-%b-%d") ddate1 我做错了什么?我应该为此安装一个软件包吗(我试过安装chron)。对我来说很有效。它不适合您的原因可能与您的系统区域设置有关 ?as.Date有以下内容: ## This will give NA(s) in some locales; setting the C loc

我正在尝试将字符串“2013-1-14”转换为日期,如下所示:

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

我做错了什么?我应该为此安装一个软件包吗(我试过安装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)
###这将在某些地区提供NA;设置C语言环境
##正如在注释行中所述,在大多数系统上都会克服这一问题。

##lct我下面的解决方案可能不适用于导致as.Date()返回NA的所有问题,但它确实适用于某些问题,即以factor格式读取日期变量时

只需在.csv中读取stringsAsFactors=FALSE

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

数据如果您试图将上课日期
系数
转换为上课日期
日期
,也会发生这种情况。您需要首先转换为
POSIXt
,否则
as.Date
不知道字符串的哪个部分对应于哪个部分

错误方式:从因子到日期的直接转换:

a<-as.factor("24/06/2018")
b<-as.Date(a,format="%Y-%m-%d")
正确的方法,将因子转换为POSIXt,然后转换为日期

a<-as.factor("24/06/2018")
abis<-strptime(a,format="%d/%m/%Y") #defining what is the original format of your date
b<-as.Date(abis,format="%Y-%m-%d") #defining what is the desired format of your date

今天我遇到了一个类似的NA问题,当我回到我的CSV文件时,我发现日期单元格的格式是“自定义”模式,而不是日期模式(在Excel中)。在我将其更改为date之后,
as.date
命令工作得很好。我知道你的问题已经解决了,但我只是想为这个问题介绍另一种可能的情况。谢谢@Nakx使用方法因子使POSIXt工作!
a
[1] 24/06/2018
Levels: 24/06/2018
class(a)
[1] "factor"
b
[1] NA
a<-as.factor("24/06/2018")
abis<-strptime(a,format="%d/%m/%Y") #defining what is the original format of your date
b<-as.Date(abis,format="%Y-%m-%d") #defining what is the desired format of your date
abis
[1] "2018-06-24 AEST"
class(abis)
[1] "POSIXlt" "POSIXt"
b
[1] "2018-06-24"
class(b)
[1] "Date"