This can be done with either the gather() or the newer pivot_longer() function. The column names in my example got modified by the read.csv function. If you data are already in a data frame, you will not have that problem.
library(tidyr)
DF <- read.csv("c:/users/fjcc/Documents/R/Play/Dummy.csv")
DF
#> Article RRP Retailer X03.05.2020 X02.05.2020 X01.05.2020
#> 1 Article X 67.5 Retailer A 55 51 58
#> 2 Article X 67.5 Retailer B 48 48 NA
#> 3 Article X 67.5 Retailer C 49 NA 67
#> 4 Article X 67.5 Retailer D NA 39 57
#> 5 Article Y 75.5 Retailer A NA NA NA
#> 6 Article Y 75.5 Retailer B 70 70 70
#> 7 Article Y 75.5 Retailer C 58 58 58
#> 8 Article Y 75.5 Retailer D 74 74 74
#> 9 Article Z 27.5 Retailer A 29 29 29
#> 10 Article Z 27.5 Retailer B 27 27 27
DFtall <- gather(DF, key = Date, value = "Value", -Article, -RRP, -Retailer)
head(DFtall)
#> Article RRP Retailer Date Value
#> 1 Article X 67.5 Retailer A X03.05.2020 55
#> 2 Article X 67.5 Retailer B X03.05.2020 48
#> 3 Article X 67.5 Retailer C X03.05.2020 49
#> 4 Article X 67.5 Retailer D X03.05.2020 NA
#> 5 Article Y 75.5 Retailer A X03.05.2020 NA
#> 6 Article Y 75.5 Retailer B X03.05.2020 70
DFtall2 <- pivot_longer(DF, -c("Article", "RRP", "Retailer"))
head(DFtall2)
#> # A tibble: 6 x 5
#> Article RRP Retailer name value
#> <fct> <dbl> <fct> <chr> <int>
#> 1 Article X 67.5 Retailer A X03.05.2020 55
#> 2 Article X 67.5 Retailer A X02.05.2020 51
#> 3 Article X 67.5 Retailer A X01.05.2020 58
#> 4 Article X 67.5 Retailer B X03.05.2020 48
#> 5 Article X 67.5 Retailer B X02.05.2020 48
#> 6 Article X 67.5 Retailer B X01.05.2020 NA
Created on 2020-05-04 by the reprex package (v0.3.0)