psysky
psysky

Reputation: 3195

R:how to transform or concatenate dates

I have such dataset:

d1=structure(list(dats = c(20220516L, 20220516L, 20220516L), t1 = c(10L, 
10L, 11L), t2 = c(20L, 20L, 21L)), class = "data.frame", row.names = c(NA, 
-3L))

Dats is date (YYYYMMDD) t1,t2 are hours. I need to transform this data into this format?

                 dt_start                  dt_end
1 2022-05-16 10:00:00.000 2022-05-30 20:00:00.000
2 2022-05-16 10:00:00.000 2022-05-30 20:00:00.000
3 2022-05-16 11:00:00.000 2022-05-31 21:00:00.000

What is the easiest way to transform (concatenate) columns to get the desired result?

Upvotes: 1

Views: 51

Answers (1)

Allan Cameron
Allan Cameron

Reputation: 173813

You can use lubridate

library(lubridate)

data.frame(dt_start = ymd(d1$dats) + hours(d1$t1),
           dt_end   = ymd(d1$dats) + hours(d1$t2))
#>              dt_start              dt_end
#> 1 2022-05-16 10:00:00 2022-05-16 20:00:00
#> 2 2022-05-16 10:00:00 2022-05-16 20:00:00
#> 3 2022-05-16 11:00:00 2022-05-16 21:00:00

Created on 2022-05-26 by the reprex package (v2.0.1)

Upvotes: 4

Related Questions