Вы на правильном пути с pivot_wider.
Вот что я сделал, чтобы повторить ваши фотографии. Примечание: я добавил столбец «Allele» для обозначения разделов. В идеале это должно исходить из вашего исходного набора данных.
# data
data <- tribble(
~ColA, ~ColB, ~Allele,
"83", 0.5, "1",
"16", 0.3, "1",
"24", 0.2, "1",
"83", 0.5, "2",
"16", 0.1, "2",
"24", 0.8, "2",
"83", 0.6, "3",
"16", 0.5, "3",
"24", 0.6, "3",
)
# pivot to column based
new_data <- data %>%
pivot_wider(names_prefix = "ColB", names_from = Allele, values_from = ColB)