Дискретизировать один столбец в R - PullRequest
0 голосов
/ 15 мая 2018

Допустим, что существует такой фрейм данных:

    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

Если кто-то знает другой способ дискретизации экземпляров столбца в кадре данных, то этобудет оценено.(особенно дискретность, которая может разделить данные на диапазоны с равным количеством экземпляров)

...