Try this:
library(tidyverse)
#Data
df <- structure(list(Region = c("National", "Bejing", "Tianjin", "Hebei"
), X1975 = c(942420, 844.4, 702.86, 4913), X1976 = c(93717, 845.1,
706.5, 4943), X1977 = c(94974, 860.5, 712.87, 4998), X2008 = c(132802,
1695, 968.87, 6989)), class = "data.frame", row.names = c(NA,
-4L))
#Code
df2 <- pivot_longer(df,cols = -Region) %>%
mutate(name=gsub('X','',name)) %>% rename(Year=name)
# A tibble: 16 x 3
Region Year value
<chr> <chr> <dbl>
1 National 1975 942420
2 National 1976 93717
3 National 1977 94974
4 National 2008 132802
5 Bejing 1975 844.
6 Bejing 1976 845.
7 Bejing 1977 860.
8 Bejing 2008 1695
9 Tianjin 1975 703.
10 Tianjin 1976 706.
11 Tianjin 1977 713.
12 Tianjin 2008 969.
13 Hebei 1975 4913
14 Hebei 1976 4943
15 Hebei 1977 4998
16 Hebei 2008 6989