Учитывая df кадра данных, который выглядит следующим образом после использования среза:
X Binned_X Dependent Importance
1 -236 -236 0 -0.25131443
2 -236 -236 1 -0.25131443
3 -236 -236 1 -0.25131443
4 -236 -236 1 -0.25131443
5 -236 -236 0 -0.25131443
6 -236 -236 1 -0.25131443
7 -236 -236 0 -0.25131443
8 320 [244,485] 1 0.06713930
9 320 [244,485] 0 0.06713930
10 320 [244,485] 1 0.06713930
11 320 [244,485] 1 0.06713930
12 244 [244,485] 1 0.06713930
13 244 [244,485] 1 0.06713930
14 244 [244,485] 0 0.06713930
15 244 [244,485] 1 0.06713930
16 485 [244,485] 0 0.06713930
17 485 [244,485] 1 0.06713930
18 485 [244,485] 1 0.06713930
19 485 [244,485] 1 0.06713930
20 485 [244,485] 1 0.06713930
21 485 [244,485] 0 0.06713930
22 485 [244,485] 0 0.06713930
23 485 [244,485] 0 0.06713930
24 485 [244,485] 1 0.06713930
25 25 [25,244) 1 0.04879016
26 25 [25,244) 1 0.04879016
27 25 [25,244) 1 0.04879016
28 25 [25,244) 1 0.04879016
29 25 [25,244) 0 0.04879016
30 25 [25,244) 1 0.04879016
31 25 [25,244) 1 0.04879016
32 108 [25,244) 1 0.04879016
33 108 [25,244) 0 0.04879016
34 108 [25,244) 0 0.04879016
35 108 [25,244) 0 0.04879016
36 108 [25,244) 1 0.04879016
37 108 [25,244) 1 0.04879016
38 108 [25,244) 0 0.04879016
Я хотел бы заменить столбец "Binned_X", если разница значений в столбце "Важность" между ячейками равнаниже, чем N (скажем, 0,2)
Важно сказать, что, поскольку X - это непрерывная переменная, если мы хотим объединить некоторые ячейки, они должны быть в следующем порядке (например, если у нас есть ячейки)«1, 2 и 3», «1» могут объединяться только с «2», «2» могут объединяться с «1» или «3», а «3» может объединяться только с «2»).Таким образом, в этом конкретном примере bin "-236" может объединяться только с "[25,244)", тогда как bin "[25,244)" может объединяться с "-236" и "[244,485]" и т. Д.
Желаемый результат будет выглядеть примерно так:
X Binned_X
1 -236 -236
2 -236 -236
3 -236 -236
4 -236 -236
5 -236 -236
6 -236 -236
7 -236 -236
8 320 [25,485]
9 320 [25,485]
10 320 [25,485]
11 320 [25,485]
12 244 [25,485]
13 244 [25,485]
14 244 [25,485]
15 244 [25,485]
16 485 [25,485]
17 485 [25,485]
18 485 [25,485]
19 485 [25,485]
20 485 [25,485]
21 485 [25,485]
22 485 [25,485]
23 485 [25,485]
24 485 [25,485]
25 25 [25,485)
26 25 [25,485)
27 25 [25,485)
28 25 [25,485)
29 25 [25,485)
30 25 [25,485)
31 25 [25,485)
32 108 [25,485)
33 108 [25,485)
34 108 [25,485)
35 108 [25,485)
36 108 [25,485)
37 108 [25,485)
38 108 [25,485)
Поскольку классы для каждого столбца выглядят так:
> lapply(df_Ex_binned,class)
$`X`
[1] "numeric"
$Binned_X
[1] "ordered" "factor"
$Dependent
[1] "numeric"
Мой подход заключается в извлечении начального числастолбец "Binned_X" (число между "(" или "[" и ","), чтобы я мог изменить его на числовой, а затем упорядочить его (для непрерывной переменной, о которой я говорил ранее).
Затем я бы сделал цикл For, сравнивая значение в столбце «Важность» и, когда разница меньше 0,2, получал бы значение перед «,» (для начального значения) предыдущей строки и значениепосле "," (для закрытия значения) задайте его для всех строк, которые содержат любое из этих двух значений в "Важности", которые были вычтены.
Итак, как и в этом подходе, я буду использовать 2 для циклови я знаю, что в R было бы действительно неэффективнымау ...
Буду очень признателен за любые предложения