library("tidyverse")
test_set = tribble(~phrase, ~wo1sp, ~wo2sp, ~wo3sp, ~wo1sc, ~wo2sc, ~wo3sc,
"hello", "dan", "mark", "todd", 10, 5, 4,
"goodbye", "mark", "dan", "kev", 2, 4, 10,
"what", "kev", "dan", "mark", 4, 5, 5)
test_set %>%
gather(key = col, value = val, -phrase) %>%
separate(col = col, into = c("num", "suffix"), sep = 3) %>%
spread(key = suffix, value = val) %>%
mutate(sc = as.numeric(sc)) %>%
select(-num)
Редактировать: я думаю, что нет необходимости разбивать col
на три столбца, можно просто сделать sep = 3