добавить столбцы со значениями WOE - PullRequest
0 голосов
/ 16 апреля 2020

В качестве примера я буду использовать mtcars с зависимой переменной am.

head(mtcars)
#                   mpg cyl disp  hp drat    wt  qsec vs am gear carb
#Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
#Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
#Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
#Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
#Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
#Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

Мне нужно добавить новые столбцы с результатами, которые дает create_infotables из информационной библиотеки. Возвращает проценты, WOE и IV.

 library(Information) 
example<-create_infotables(data=mtcars,y="am")
 example$Tables$mpg

$mpg
           mpg N Percent         WOE         IV
1  [10.4,10.4] 2 0.06250  0.00000000 0.00000000
2  [13.3,14.7] 3 0.09375  0.00000000 0.00000000
3    [15,15.5] 4 0.12500 -0.71912267 0.05822856
4  [15.8,17.3] 3 0.09375 -0.31365756 0.06711764
5  [17.8,18.7] 3 0.09375  0.00000000 0.06711764
6  [19.2,19.7] 3 0.09375 -0.31365756 0.07600672
7      [21,21] 2 0.06250  0.00000000 0.07600672
8  [21.4,22.8] 5 0.15625 -0.02597549 0.07611188
9  [24.4,27.3] 3 0.09375  1.07263680 0.18467836
10 [30.4,33.9] 4 0.12500  0.00000000 0.18467836

То, что я ожидаю, выглядит примерно так, но для всех переменных одновременно (новый столбец для каждой переменной) Например, для mpg:

#                   mpg cyl disp  hp drat    wt  qsec vs am gear carb mpg_woe
#Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4   0
#Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4   0 
#Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1 -0.025
#Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1 -0.025
#Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2   0
#Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1   0

Я видел, что с функцией горе работает, но у меня есть фрейм данных с 90 столбцами, поэтому я не могу сделать это один за другим. Или я должен использовать другую библиотеку? Спасибо всем, кто мог помочь!

...