Допустим, что существует такой фрейм данных:
a b c
1. 2 2 3
2. 5 4 4
3. 1 7 4
4. 1 9 4
5. 2 14 0
6. 9 10 6
Я бы хотел дискретизировать данные в столбце b и средства ввода полученных диапазонов в виде дискретных значений для экземпляров в указанном столбцеобработанного фрейма данных.Прогнозируемый результат может выглядеть следующим образом:
a b c
1. 2 3 3
2. 5 3 4
3. 1 8 4
4. 1 8 4
5. 2 12 0
6. 9 12 6
Я натолкнулся на такие функции, как дискретизация из arules библиотека
res <- discretize(df$b, method = "frequency", breaks = 3)
, которые я полагаюможет решить проблему, но я обнаружил, что невозможно ввести средства обратно на df .
Редактировать
Благодаря решениям, приведенным в комментариях, мне удалось добиться удовлетворительного распределения исходных данных между диапазонами.Я также проверил это на df$b <- iris$Petal.Length
(решение @alistaire):
ave(df$b, cut(df$b, quantile(df$b, seq(0, 1, length = 8)),
include.lowest = TRUE), FUN = mean)
со следующими результатами:
hist(df$b)$count
24 20 0 0 22 0 21 21 23 0 19
Если кто-то знает другой способ дискретизации экземпляров столбца в кадре данных, то этобудет оценено.(особенно дискретность, которая может разделить данные на диапазоны с равным количеством экземпляров)