I am trying to convert the string "2013-JAN-14" into a Date as follow :
sdate1 <- "2013-JAN-14" ddate1 <- as.Date(sdate1,format="%Y-%b-%d") ddate1
but I get :
[1] NA
What am I doing wrong ? should I install a package for this purpose (I tried installing chron) .
You can use the as. Date( ) function to convert character data to dates. The format is as. Date(x, "format"), where x is the character data and format gives the appropriate format.
Date() function in R Language is used to convert a string into date format.
Works for me. The reasons it doesn't for you probably has to do with your system locale.
?as.Date
has the following to say:
## 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)
Worth a try.
This can also happen if you try to convert your date of class factor
into a date of class Date
. You need to first convert into POSIXt
otherwise as.Date
doesn't know what part of your string corresponds to what.
Wrong way: direct conversion from factor to date:
a<-as.factor("24/06/2018") b<-as.Date(a,format="%Y-%m-%d")
You will get as an output:
a [1] 24/06/2018 Levels: 24/06/2018 class(a) [1] "factor" b [1] NA
Right way, converting factor into POSIXt and then into date
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
You will get as an output:
abis [1] "2018-06-24 AEST" class(abis) [1] "POSIXlt" "POSIXt" b [1] "2018-06-24" class(b) [1] "Date"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With