Сбор нескольких фиктивных переменных как одной категориальной переменной в R - PullRequest
0 голосов
/ 15 ноября 2018

Мне известно о этом решении , но у меня возникают трудности с применением его к данным, которые не являются только фиктивными переменными.

Некоторый пример кода для загрузки, в основном из серии расходов

df <- data.frame(Charge = c(12,4,6,10,5,9), Groceries = c(1,0,0,0,0,0),Utilities = c(0,1,0,0,0,0),Consumables = c(0,0,1,0,0,0), Transportation = c(0,0,0,1,0,0),Entertainment = c(0,0,0,0,1,0),Misc = c(0,0,0,0,0,1))

Я хотел бы создать новую переменную «Категория», которая принимает имена столбцов, которые в настоящее время закодированы как двоичные файлы.Я могу сделать это с помощью ifelse, но я ищу более общее решение, например, из пакета измененной формы.

В настоящее время я могу решить эту проблему только с помощью:

df$Category <- ifelse(df$Groceries==1, "Groceries", 

                                ifelse(df$Utilities==1,"Utilities",
                                       ifelse(df$Consumables==1,"Consumables",
                                              ifelse(df$Transportation==1,"Transportation",
                                                     ifelse(df$Entertainment==1,"Entertainment","Misc")))))

Спасибо заранее!

1 Ответ

0 голосов
/ 15 ноября 2018

Если всегда есть 1, и он не повторяется в одной строке, тогда используйте max.col, чтобы вернуть индекс максимального значения в строке, и с этим индексом установите подмножество names набора данных

df$Category <- names(df)[-1][max.col(df[-1])]
df$Category
#[1] "Groceries"      "Utilities"      "Consumables"    "Transportation" "Entertainment"  "Misc"  
...