This give you basically what you want. The pivot_longer() function does the important reshaping and the select() is only used to reorder the columns.
DF <- data.frame(Date=c("1-Mar-2021","2-Mar-2021","3-Mar-2021","4-Mar-2021","5-Mar-2021",
"6-Mar-2021","7-Mar-2021"),
AC3=c("OS","X","C1","NO","M1","M2","O"),
C13=c("O","PDL","X","A3f","E2","O","O"))
library(tidyr)
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
DF_new <- pivot_longer(DF,cols = c("AC3","C13"),values_to = "Shift") %>%
select(Date,Shift,name)
DF_new
#> # A tibble: 14 x 3
#> Date Shift name
#> <chr> <chr> <chr>
#> 1 1-Mar-2021 OS AC3
#> 2 1-Mar-2021 O C13
#> 3 2-Mar-2021 X AC3
#> 4 2-Mar-2021 PDL C13
#> 5 3-Mar-2021 C1 AC3
#> 6 3-Mar-2021 X C13
#> 7 4-Mar-2021 NO AC3
#> 8 4-Mar-2021 A3f C13
#> 9 5-Mar-2021 M1 AC3
#> 10 5-Mar-2021 E2 C13
#> 11 6-Mar-2021 M2 AC3
#> 12 6-Mar-2021 O C13
#> 13 7-Mar-2021 O AC3
#> 14 7-Mar-2021 O C13
Created on 2021-03-14 by the reprex package (v0.3.0)