'Time-stretching with ranges

I'm putting together a data set that records people's weekly shift start and end times every 15 minutes. How do I modify the values in a 24-hour format with a 15-minute time step? The new format will kick off at 4 am.

Data sample:

test1<-structure(list(sn1 = c(1L, 1L), sn2 = c(249L, 249L), sn3 = 3:4, 
    wsday1 = c("friday", "friday"), wjob01s1 = c("8:01 8:15", 
    "14:01 15"), wjob01e1 = c("17:46 18:00", "17:16 17:30")), class = "data.frame", row.names = c(NA, 
-2L))

Output:

  sn1 sn2 sn3 wsday1  wjob01s1    wjob01e1
1   1 249   3 Friday  8:01 8:15   17:46 18:00
2   1 249   4 friday  14:01 15    17:16 17:30

Requested outcome: The starting variable is t0400 0415 d1, where t0400 0415 refers to the 04:00-04:15 time slots and d1 refers to day 1.

test2<-structure(list(sn1 = c(1L, 1L), sn2 = c(249L, 249L), sn3 = 3:4, 
    wsday1 = c("friday", "friday"), t0400_0415_d1 = c("Did not work", 
    "Did not work"), t0415_0430_d1 = c("Did not work", "Did not work"
    ), t0430_0445_d1 = c("Did not work", "Did not work"), t0445_0500_d1 = c("Did not work", 
    "Did not work"), t0500_0515_d1 = c("Did not work", "Did not work"
    ), t0515_0530_d1 = c("Did not work", "Did not work"), t0530_0545_d1 = c("Did not work", 
    "Did not work"), t0545_0600_d1 = c("Did not work", "Did not work"
    ), t0600_0615_d1 = c("Did not work", "Did not work"), t0615_0630_d1 = c("Did not work", 
    "Did not work"), t0630_0645_d1 = c("Did not work", "Did not work"
    ), t0645_0700_d1 = c("Did not work", "Did not work"), t0700_0715_d1 = c("Did not work", 
    "Did not work"), t0715_0730_d1 = c("Did not work", "Did not work"
    ), t0730_0745_d1 = c("Did not work", "Did not work"), t0745_0800_d1 = c("Did not work", 
    "Did not work"), t0800_0815_d1 = c("Worked", "Did not work"
    ), t0815_0830_d1 = c("Worked", "Did not work"), t0830_0845_d1 = c("Worked", 
    "Did not work"), t0845_0900_d1 = c("Worked", "Did not work"
    ), t0900_0915_d1 = c("Worked", "Did not work"), t0915_0930_d1 = c("Worked", 
    "Did not work"), t0930_0945_d1 = c("Worked", "Did not work"
    ), t0945_1000_d1 = c("Worked", "Did not work"), t1000_1015_d1 = c("Worked", 
    "Did not work"), t1015_1030_d1 = c("Worked", "Did not work"
    ), t1030_1045_d1 = c("Worked", "Did not work"), t1045_1100_d1 = c("Worked", 
    "Did not work"), t1100_1115_d1 = c("Worked", "Did not work"
    ), t1115_1130_d1 = c("Worked", "Did not work"), t1130_1145_d1 = c("Worked", 
    "Did not work"), t1145_1200_d1 = c("Worked", "Did not work"
    ), t1200_1215_d1 = c("Worked", "Did not work"), t1215_1230_d1 = c("Worked", 
    "Did not work"), t1230_1245_d1 = c("Worked", "Did not work"
    ), t1245_1300_d1 = c("Worked", "Did not work"), t1300_1315_d1 = c("Worked", 
    "Did not work"), t1315_1330_d1 = c("Worked", "Did not work"
    ), t1330_1345_d1 = c("Worked", "Did not work"), t1345_1400_d1 = c("Worked", 
    "Did not work"), t1400_1415_d1 = c("Worked", "Worked"), t1415_1430_d1 = c("Worked", 
    "Worked"), t1430_1445_d1 = c("Worked", "Worked"), t1445_1500_d1 = c("Worked", 
    "Worked"), t1500_1515_d1 = c("Worked", "Worked"), t1515_1530_d1 = c("Worked", 
    "Worked"), t1530_1545_d1 = c("Worked", "Worked"), t1545_1600_d1 = c("Worked", 
    "Worked"), t1600_1615_d1 = c("Worked", "Worked"), t1615_1630_d1 = c("Worked", 
    "Worked"), t1630_1645_d1 = c("Worked", "Worked"), t1645_1700_d1 = c("Worked", 
    "Worked"), t1700_1715_d1 = c("Worked", "Worked"), t1715_1730_d1 = c("Worked", 
    "Worked"), t1730_1745_d1 = c("Worked", "Did not work"), t1745_1800_d1 = c("Worked", 
    "Did not work"), t1800_1815_d1 = c("Did not work", "Did not work"
    ), t1815_1830_d1 = c("Did not work", "Did not work"), t1830_1845_d1 = c("Did not work", 
    "Did not work"), t1845_1900_d1 = c("Did not work", "Did not work"
    ), t1900_1915_d1 = c("Did not work", "Did not work"), t1915_1930_d1 = c("Did not work", 
    "Did not work"), t1930_1945_d1 = c("Did not work", "Did not work"
    ), t1945_2000_d1 = c("Did not work", "Did not work"), t2000_2015_d1 = c("Did not work", 
    "Did not work"), t2015_2030_d1 = c("Did not work", "Did not work"
    ), t2030_2045_d1 = c("Did not work", "Did not work"), t2045_2100_d1 = c("Did not work", 
    "Did not work"), t2100_2115_d1 = c("Did not work", "Did not work"
    ), t2115_2130_d1 = c("Did not work", "Did not work"), t2130_2145_d1 = c("Did not work", 
    "Did not work"), t2145_2200_d1 = c("Did not work", "Did not work"
    ), t2200_2215_d1 = c("Did not work", "Did not work"), t2215_2230_d1 = c("Did not work", 
    "Did not work"), t2230_2245_d1 = c("Did not work", "Did not work"
    ), t2245_2300_d1 = c("Did not work", "Did not work"), t2300_2315_d1 = c("Did not work", 
    "Did not work"), t2315_2330_d1 = c("Did not work", "Did not work"
    ), t2330_2345_d1 = c("Did not work", "Did not work"), t2345_2400_d1 = c("Did not work", 
    "Did not work"), t0000_0015_d1 = c("Did not work", "Did not work"
    ), t0015_0030_d1 = c("Did not work", "Did not work"), t0030_0045_d1 = c("Did not work", 
    "Did not work"), t0045_0100_d1 = c("Did not work", "Did not work"
    ), t0100_0115_d1 = c("Did not work", "Did not work"), t0115_0130_d1 = c("Did not work", 
    "Did not work"), t0130_0145_d1 = c("Did not work", "Did not work"
    ), t0145_0200_d1 = c("Did not work", "Did not work"), t0200_0215_d1 = c("Did not work", 
    "Did not work"), t0215_0230_d1 = c("Did not work", "Did not work"
    ), t0230_0245_d1 = c("Did not work", "Did not work"), t0245_0300_d1 = c("Did not work", 
    "Did not work"), t0300_0315_d1 = c("Did not work", "Did not work"
    ), t0315_0330_d1 = c("Did not work", "Did not work"), t0330_0345_d1 = c("Did not work", 
    "Did not work"), t0345_0400_d1 = c("Did not work", "Did not work"
    )), class = "data.frame", row.names = c(NA, -2L))


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source