Try the pivot_wider() function from the tidyr package.
DF <- read.csv("~/R/Play/Dummy.csv")
DF
#> ID A B C
#> 1 ESF_Beta 1 4 9
#> 2 ESF_Gamma 5 5 5
#> 3 ESF_Alfa 7 9 1
#> 4 GIN_Beta 3 2 8
#> 5 GIN_Gamma 4 8 3
#> 6 GIN_Alfa 2 1 7
library(tidyr)
DF <- DF %>% separate(ID,into = c("ID","Label"))
DF
#> ID Label A B C
#> 1 ESF Beta 1 4 9
#> 2 ESF Gamma 5 5 5
#> 3 ESF Alfa 7 9 1
#> 4 GIN Beta 3 2 8
#> 5 GIN Gamma 4 8 3
#> 6 GIN Alfa 2 1 7
pivot_wider(DF,names_from = Label,values_from = c("A","B","C"))
#> # A tibble: 2 x 10
#> ID A_Beta A_Gamma A_Alfa B_Beta B_Gamma B_Alfa C_Beta C_Gamma C_Alfa
#> <chr> <int> <int> <int> <int> <int> <int> <int> <int> <int>
#> 1 ESF 1 5 7 4 5 9 9 5 1
#> 2 GIN 3 4 2 2 8 1 8 3 7
Created on 2020-10-24 by the reprex package (v0.3.0)