50

I have an integer which I want to convert to class Date. I assume I first need to convert it to a string, but how?

My attempt:

v <- 20081101
date <- as.Date(v, format("%Y%m%d"))

Error in charToDate(x) : character string is not in a standard unambiguous format

Using paste() works, but is that really the correct way to do the conversion?

date <- as.Date(paste(v), format("%Y%m%d"))
date
[1] "2008-11-01"

class(date)
# [1] "Date"
Henrik
  • 61,039
  • 13
  • 131
  • 152
Elzo Valugi
  • 25,880
  • 14
  • 91
  • 114

3 Answers3

59

as.character() would be the general way rather than use paste() for its side effect

> v <- 20081101
> date <- as.Date(as.character(v), format = "%Y%m%d")
> date
[1] "2008-11-01"

(I presume this is a simple example and something like this:

v <- "20081101"

isn't possible?)

Gavin Simpson
  • 164,190
  • 25
  • 377
  • 440
19

Another way to get the same result:

date <- strptime(v,format="%Y%m%d")
Vivi
  • 3,850
  • 6
  • 28
  • 43
3

You can use ymd from lubridate

lubridate::ymd(v)
#[1] "2008-11-01"

Or anytime::anydate

anytime::anydate(v)
#[1] "2008-11-01"
Ronak Shah
  • 355,584
  • 18
  • 123
  • 178