setting column to datetime in R


That is a somewhat degenerate format, but the anytime() and anydate() functions of the anytime package can help you, without requiring any explicit format strings:

R> anytime("20130501000000")       ## returns POSIXct
[1] "2013-05-01 CDT"
R> anydate("20130501000000")       ## returns Date
[1] "2013-05-01"

Not that we parse from character representation here -- parsing from numeric would be wrong as we use a conflicting heuristic to make sense of dates stored a numeric values.

So here your code would just become

data1$data <- anytime::anydate(data1$date)

provided data1$date is in character, else wrap one as.character() around it.

Lastly, if you actually want Datetime rather than Date (as per your title), don't use anydate() but anytime().


Related videos on Youtube

Author by


Updated on May 15, 2022


  • ajax2000
    ajax2000 13 days

    The date in my dataset is like this: 20130501000000 and I'm trying to convert this to a better datetime format in R

    data1$date <- as.Date(data1$date, format = "%Y-%m-%s-%h-%m-%s")

    However, I get an error for needing an origin. After I put the very first cell under date in as origin, it converts every cell under date to N/A. Is this right or should I try as.POSIXct()?

  • Dirk Eddelbuettel
    Dirk Eddelbuettel over 5 years
    You are welcome. Please feel free "accept" (click on tickmark) and/or "upvote" (click on up-arrow) if the answer fits your question.