(This is a dupe of Reshaping data.frame from wide to long format, Transforming wide data to long format with multiple variables. I can't vtc, vote was already cast.)
Sample data:
set.seed(42)
dat <- data.frame(Plot=letters[1:4], X01=runif(4), X01.1=runif(4), X01.2=runif(4), Y01=runif(4), Y01.1=runif(4), Y01.2=runif(4))
dat
# Plot X01 X01.1 X01.2 Y01 Y01.1 Y01.2
# 1 a 0.9148060 0.6417455 0.6569923 0.9346722 0.9782264 0.9040314
# 2 b 0.9370754 0.5190959 0.7050648 0.2554288 0.1174874 0.1387102
# 3 c 0.2861395 0.7365883 0.4577418 0.4622928 0.4749971 0.9888917
# 4 d 0.8304476 0.1346666 0.7191123 0.9400145 0.5603327 0.9466682
Code
tidyr::pivot_longer(dat, -Plot, names_pattern = "([XY])(.*)", names_to = c(".value", "miniplot"))
# # A tibble: 12 × 4
# Plot miniplot X Y
# <chr> <chr> <dbl> <dbl>
# 1 a 01 0.915 0.935
# 2 a 01.1 0.642 0.978
# 3 a 01.2 0.657 0.904
# 4 b 01 0.937 0.255
# 5 b 01.1 0.519 0.117
# 6 b 01.2 0.705 0.139
# 7 c 01 0.286 0.462
# 8 c 01.1 0.737 0.475
# 9 c 01.2 0.458 0.989
# 10 d 01 0.830 0.940
# 11 d 01.1 0.135 0.560
# 12 d 01.2 0.719 0.947