Попробуй
library(tidyverse)
df <- tribble(~Var1, ~Freq,
"A", 16,
"B", 15,
"C", 11,
"D", 11,
"E", 2,
"F", 1) %>%
group_by(Freq) %>%
summarise(Var1 = paste(Var1, collapse = ",")) %>%
arrange(Var1) %>%
as.matrix() %>%
t() %>% as_tibble(.name_repair = "universal") %>%
mutate_all(~str_trim(.)) %>%
arrange(desc(...1))
colnames(df) <- paste0("cat", 1:length(df))