2013-03-22 4 views
13

Sto cercando di convertire la stringa "2013-GEN-14" in una data come segue:as.Date ritorno NA durante la conversione da 'ddMMMyyyy'

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

ma ottengo:

[1] NA 

Cosa sto sbagliando? dovrei installare un pacchetto per questo scopo (ho provato a installare chron).

risposta

21

Lavori per me. Le ragioni che non ha per te probabilmente hanno a che fare con le impostazioni locali del tuo sistema.

?as.Date ha il seguente a dire:

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

pena di provare.

+3

Ho affrontato un problema NA simile oggi e quando sono tornato al mio file CSV, ho scoperto che la formattazione della cella Data era in modalità "Personalizzata" invece di Modalità data (in Excel). Dopo averlo modificato, il comando 'as.Date' ha funzionato bene. Sono consapevole che il tuo problema è stato risolto, ma volevo solo presentare un'altra possibile situazione per questo problema. – LearneR

4

La mia soluzione di seguito potrebbe non funzionare per ogni problema che si traduce in come.Data() restituendo NA, ma funziona per alcuni, vale a dire, quando la variabile Data viene letta in formato Factor.

Basta leggere nel .csv con stringsAsFactors = FALSE

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

Dopo aver provato (e non) per risolvere il problema con il mio NA locale del sistema, questa soluzione ha funzionato per me.

Problemi correlati