Сделайте это.
Сначала загрузите необходимые пакеты:
library (data.table)
library (stringr) # this is just for the piping operator %>%
Вы бы прочли здесь в своей таблице данных, я создаю одну в качестве примера:
dat = c( "Sergey","USSR",1,2,3,4,5,6,7,8,"silver") %>% rep (125) %>% data.table
setnames (dat, "stage3")
В качестве краткого примечания, я бы не стал читать в ваших строках такие факторы, как вы в своем собственном коде, потому что тогда это может испортить преобразование в числовое значение.
Это будет повторятьсяСам заполнить таблицу.это работает, только если ваша таблица не пропускает значения.Кроме того, не рекомендуется иметь имена столбцов в виде чисел, лучше давать им собственные имена, такие как «test1», «test2» и т. д .:
dat [, metadata := c ("name","country",1:8,"medal") ] # whatever you want to name your future 11 columns
dat [, participant := 1: (.N / 11) %>% rep (each = 11) ] # same idea, can't have missing rows
Теперь, если возможно, измените форму и преобразуйте строки в числовые:
new.dat =
dcast (dat, participant ~ metadata, value.var = "stage3") [, lapply (.SD, type.convert) ]