Home > other >  R Convert number to hh:mm:ss
R Convert number to hh:mm:ss

Time:01-26

I have a column in a dataframe that is the number of seconds past midnight. How would I got about converting that number to a time displayed as hh:mm:ss? For instance:

hrsecs
1563
13088
14309

becomes

Time
00:26:03
03:38:08
03:58:29

Thank you for your help.

CodePudding user response:

Convert the seconds to period (seconds_to_period) and use hms from hms package

library(lubridate)
library(dplyr)
df1 <- df1 %>% 
   transmute(Time = hms::hms(seconds_to_period(hrsecs)))

-output

df1
  Time
1 00:26:03
2 03:38:08
3 03:58:29

data

df1 <- structure(list(hrsecs = c(1563L, 13088L, 14309L)), 
class = "data.frame", row.names = c(NA, 
-3L))

CodePudding user response:

1) character output Convert to POSIXct and then format. No packages are used.

x <- c(1563, 13088, 14309)
tt <- format(as.POSIXct("1970-01-01")   x, "%T"); tt
## [1] "00:26:03" "03:38:08" "03:58:29"

or

tt <- format(structure(x, class = c("POSIXct", "POSIXt"), tzone = "UTC"), "%T")
tt
## [1] "00:26:03" "03:38:08" "03:58:29"

2) times class output If you want to be able to manipulate the times then this will express them internally as fractions of a day but render them as times.

library(chron)
times(tt)
## [1] 00:26:03 03:38:08 03:58:29
  •  Tags:  
  • Related