Только что увиденный закрытый вопрос, который был здесь задан, и никто еще не упомянул об использовании пакета dummies
:
Вы можете перекодировать свои переменные с помощью функции dummy.data.frame()
, которая построена поверх model.matrix()
, но имеет более простой синтаксис, некоторые хорошие параметры и вернет dataframe:
> dummy.data.frame(df, sep="_")
v1_a v1_b v1_c v2_a v2_b v2_c
1 0 1 0 0 0 1
2 1 0 0 1 0 0
3 0 0 1 0 0 1
4 0 1 0 1 0 0
5 0 0 1 0 0 1
6 0 0 1 0 1 0
7 1 0 0 1 0 0
8 1 0 0 0 1 0
9 1 0 0 0 0 1
10 1 0 0 0 1 0
Некоторые приятные аспекты этой функции - вы можете легко определить разделитель для новых имен (sep=
), (all=F
) и имеет свой собственный вариант dummy.classes
, который позволяет указать, какие классы столбца должны быть закодированы.
Вы также можете просто использовать функцию dummy()
, чтобы применить это к всего один столбец.