2013-03-22 90 views
13

我想字符串 「2013-JAN-14」 轉換成日期如下轉變:as.Date返回NA,同時從 'ddmmmyyyy'

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

,但我得到:

[1] NA 

我做錯了什麼?我應該爲此安裝一個軟件包(我嘗試安裝chron)。

回答

21

適合我。它不適合你的原因可能與你的系統區域設置有關。

?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) 

值得一試。

+3

我今天遇到了類似的NA問題,當我回到我的CSV文件時,發現Date單元格的格式化處於「自定義」模式而不是日期模式(在Excel中)。在我將其更改爲日期後,'as.Date'命令工作得很好。我知道你的問題已經解決,但我只是想爲這個問題提出另一種可能的情況。 – LearneR 2015-05-19 11:00:40

4

下面的解決方案可能不適用於導致as.Date()返回NA的每個問題,但它對某些工作,即以因子格式讀取Date變量時工作。

與stringsAsFactors該.csv只需閱讀= FALSE

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

試圖(和失敗),與我的系統語言環境來解決問題NA後,該解決方案爲我工作。