df <- structure(list(Date = c("1/1/2020", "2/1/2020", "3/1/2020", "1/1/2021",
"2/1/2021", "3/1/2021"), Left = c(1L, 1L, 2L, 1L, 1L, 2L), Right = c(1L,
7L, 3L, 2L, 7L, 3L), Up = c(2L, 8L, 4L, 2L, 8L, 4L), Down = c(2L,
9L, 6L, 2L, 9L, 6L), Middle = c(2L, 8L, 7L, 2L, 8L, 7L), Size = c(2L,
8L, 8L, 7L, 8L, 8L)), class = "data.frame", row.names = c(NA, -6L))
output <- split(df, format(as.Date(df$Date, "%d/%m/%Y"), "%Y"))
output
#$`2020`
# Date Left Right Up Down Middle Size
#1 1/1/2020 1 1 2 2 2 2
#2 2/1/2020 1 7 8 9 8 8
#3 3/1/2020 2 3 4 6 7 8
#$`2021`
# Date Left Right Up Down Middle Size
#4 1/1/2021 1 2 2 2 2 7
#5 2/1/2021 1 7 8 9 8 8
#6 3/1/2021 2 3 4 6 7 8
You can also achieve that using lubridate functions.