Search code examples
rdatetimedataframedata-analysisposixlt

extracting hour and minute from character column in r


I have the following data frame,the data set is already imported from a database table and created_at column has character type:

sale_id      created_at
1               2016-05-28T05:53:31.042Z
2               2016-05-30T12:50:58.184Z
3               2016-05-23T10:22:18.858Z
4               2016-05-27T09:20:15.158Z
5               2016-05-21T08:30:17.337Z
6               2016-05-28T07:41:14.361Z

How can i extract only hour and minute from created_at column , preferably using base r libraries? i need to paste hour and minute together later and put it as a new column.


Solution

  • We can use the convenient functions in lubridate to convert the character column to DateTime and extract the hour and minute with format

    library(lubridate)
    v1 <- ymd_hms("2016-05-28T05:53:31.042Z")
    format(v1, "%H:%M")
    #[1] "05:53"
    

    Or using only base R

    format(as.POSIXct("2016-05-28T05:53:31.042z", format = "%Y-%m-%dT%H:%M:%S"),  "%H:%M")
    #[1] "05:53"
    

    Other options include with gsub

    gsub(".*T|:\\d+\\..*", "", "2016-05-28T05:53:31.042z")
    #[1] "05:53"