Я работаю с чрезвычайно большим набором данных в R и работал с кадрами данных и решил переключиться на data.tables, чтобы ускорить работу. У меня возникли проблемы с пониманием операций J, в частности, я пытаюсь создать фиктивные переменные, но я не могу понять, как закодировать условные операции в data.tables [].Создание фиктивных переменных в R data.table
MWE:
test <- data.table("index"=rep(letters[1:10],100),"var1"=rnorm(1000,0,1))
То, что я хотел бы сделать, это добавить столбцы a
через j
как фиктивные переменные, такие, что столбец a
будет иметь значение 1
когда index == "a"
и 0
иначе. В среде data.frame это будет выглядеть примерно так:
test$a <- 0
test$a[test$index=='a'] <- 1
Вот пример с манекенами, которые могут помочь: http://stackoverflow.com/questions/18871614/r-datatable-join-and-constrain-rows/18874811#18874811 – Frank
Что такое «очень большой»? Является ли 'model.matrix (~ var1 + index-1, test)' слишком медленным? – Roland
С моим набором данных (9 миллионов строк) решение Фрэнка ниже - это единственное, что работает. С 'model.matrix' у меня заканчивается память. – Riccardo