Вы могли бы сделать подход разделения - порядка - вставки.
colnames(samp) <-
mapply(function(x) paste(x[c(1, 3:2)], collapse="_"), strsplit(colnames(samp), "_"))
colnames(samp)
# [1] "Q11_1_1" "Q11_1_2" "Q11_1_3" "Q11_1_4" "Q11_1_5" "Q11_1_6" "Q11_1_7" "Q11_1_8"
# [9] "Q11_1_9" "Q11_1_10" "Q11_1_11" "Q11_1_12" "Q11_1_99" "Q11_2_1" "Q11_2_2" "Q11_2_3"
# [17] "Q11_2_4" "Q11_2_5" "Q11_2_6" "Q11_2_7" "Q11_2_8" "Q11_2_9" "Q11_2_10" "Q11_2_11"
# [25] "Q11_2_12" "Q11_2_99"
Данные
samp <- structure(c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), .Dim = c(1L,
26L), .Dimnames = list(NULL, c("Q11_1_1", "Q11_1_2", "Q11_1_3",
"Q11_1_4", "Q11_1_5", "Q11_1_6", "Q11_1_7", "Q11_1_8", "Q11_1_9",
"Q11_1_10", "Q11_1_11", "Q11_1_12", "Q11_1_99", "Q11_2_1", "Q11_2_2",
"Q11_2_3", "Q11_2_4", "Q11_2_5", "Q11_2_6", "Q11_2_7", "Q11_2_8",
"Q11_2_9", "Q11_2_10", "Q11_2_11", "Q11_2_12", "Q11_2_99")))