Я хотел бы создать фиктивные переменные из этого набора данных:
DF<-structure(list(A = c(1, 2, 3, 4, 5), B = c("1,3,2", "2,1,3,6",
"3,2,5,1,7", "3,7,4,2,6,5", "4,10,7,3,5,6")), .Names = c("A", "B"),
row.names = c(NA, 5L), class = "data.frame")
> DF
A B
1 1 1,3,2
2 2 2,1,3,6
3 3 3,2,5,1,7
4 4 3,7,4,2,6,5
5 5 4,10,7,3,5,6
Желаемый выход shoud выглядит следующим образом:
A 1 2 3 4 5 6 7 8 9 10
1 1 1 1 0 0 0 0 0 0 0
2 1 1 1 0 0 1 0 0 0 0
3 1 1 1 0 1 0 1 0 0 0
4 0 1 1 1 1 1 1 0 0 0
5 0 0 1 1 1 1 1 0 0 1
Есть ли эффективный способ сделать такую вещь? Я могу использовать strsplit
или ifelse
. Оригинальный набор данных очень большой, со многими строками ( > 10k) и значениями в столбце B ( > 15k). Функция dummy
из пакета dummies
не работает так, как я хочу.
Я также нашел симпальный случай: Разделение одного столбца на несколько столбцов. Но разработчики из вышеперечисленных ссылок работают очень медленно в моем случае (до 15 минут на моем Dell i7-2630QM, 8Gb, Win7 64 бит, R 2.15.3 64 бит).
Заранее благодарю за ваших собеседников.