Based on @Pokemoon comment, my solution might be more applicable
df <- df |>
mutate(ID = case_when(V3=="INFO" ~ V4, .default = NA)) |>
tidyr::fill(ID) |>
filter(V1 != "REF") |>
rename(
REF = V1,
ALT = V2,
INFO = V3,
VAR = V4
)
Edited to properly have default column names of V#.