У меня есть кадр данных со столбцом целых чисел, которые я хотел бы использовать в качестве ссылки для создания новой категориальной переменной. Я хочу разделить переменную на три группы и установить диапазоны сам (т.е. 0-5, 6-10, и т.д.). Я попробовал cut
но это делит переменную на группы на основе нормального распределения, и мои данные правильные скошенный. Я также попытался использовать условные операторы, но это производит истинное/ложное значение, и я хотел бы сохранить свою исходную переменную. Я уверен, что существует простой способ сделать это, но я, может казаться, не понимаю это. Совет относительно простого способа сделать это быстро?
Я имел что-то в виду как это:
x x.range
3 0-5
4 0-5
6 6-10
12 11-15
Ответ Яна ( cut ), насколько мне известно, является наиболее распространенным способом сделать это.
Я предпочитаю использовать shingle , из пакета Lattice Package
аргумент, который задает интервалы бинирования, кажется мне немного более интуитивным.
вы используете черепицу так:
# mock some data
data = sample(0:40, 200, replace=T)
a = c(0, 5);b = c(5,9);c = c(9, 19);d = c(19, 33);e = c(33, 41)
my_bins = matrix(rbind(a, b, c, d, e), ncol=2)
# returns: (the binning intervals i've set)
[,1] [,2]
[1,] 0 5
[2,] 5 9
[3,] 9 19
[4,] 19 33
[5,] 33 41
shx = shingle(data, intervals=my_bins)
#'shx' at the interactive prompt will give you a nice frequency table:
# Intervals:
min max count
1 0 5 23
2 5 9 17
3 9 19 56
4 19 33 76
5 33 41 46