У меня есть несколько фреймов данных, которые содержат фактор, который я хочу расширить до количества двоичных эквивалентов (одно горячее кодирование). Однако в каждом фрейме данных присутствуют не все возможные факторы, но я знаю, что это за возможные факторы (таких факторов 70). Я хочу добавить все возможные двоичные файлы для каждого фрейма данных.
Из приведенного ниже кода я могу создать макеты в каждом фрейме данных, но не все возможные макеты. Например, set1.df не имеет ни одного человека в категории «E» или «F», в то время как set2.df не имеет никого в категории «D». Необходимы дополнительные столбцы set1.dfE set1.dfF в set1.df, которые все равны 0, и столбец set2.dfD в set2.df, который является всеми нулями. Я не могу rbind set1.df и set2.df перед созданием манекенов, потому что мне нужно выполнить некоторую обработку каждого фрейма данных с использованием двоичных переменных перед rbinding. Просто чтобы повторить, я знаю, какие уровни возможны в моих данных перед этим, например, от «A» до «F».
library(dummies)
person_id <- c(1,2,3,4,5,6,7,8,9,10)
person_cat <- c("A","B","C","A","B","C","D","A","A","A")
set1.df <- data.frame(person_id,person_cat)
person_id <- c(11,12,13,14,15,16,17,18,19,20)
person_cat <- c("A","B","C","A","B","C","E","E","F","A")
set2.df <- data.frame(person_id,person_cat)
dummies1 <- dummy(set1.df[,2])
dummies2 <- dummy(set2.df[,2])
dummies1
dummies2
Ожидаемый результат:
> dummies1
set1.dfA set1.dfB set1.dfC set1.dfD set1.dfE set1.dfF
[1,] 1 0 0 0 0 0
[2,] 0 1 0 0 0 0
[3,] 0 0 1 0 0 0
[4,] 1 0 0 0 0 0
[5,] 0 1 0 0 0 0
[6,] 0 0 1 0 0 0
[7,] 0 0 0 1 0 0
[8,] 1 0 0 0 0 0
[9,] 1 0 0 0 0 0
[10,] 1 0 0 0 0 0
> dummies2
set2.dfA set2.dfB set2.dfC set2.df$D set2.dfE set2.dfF
[1,] 1 0 0 0 0 0
[2,] 0 1 0 0 0 0
[3,] 0 0 1 0 0 0
[4,] 1 0 0 0 0 0
[5,] 0 1 0 0 0 0
[6,] 0 0 1 0 0 0
[7,] 0 0 0 0 1 0
[8,] 0 0 0 0 1 0
[9,] 0 0 0 0 0 1
[10,] 1 0 0 0 0 0