Создайте категориальную переменную в R на основе диапазона

У меня есть кадр данных со столбцом целых чисел, которые я хотел бы использовать в качестве ссылки для создания новой категориальной переменной. Я хочу разделить переменную на три группы и установить диапазоны сам (т.е. 0-5, 6-10, и т.д.). Я попробовал cut но это делит переменную на группы на основе нормального распределения, и мои данные правильные скошенный. Я также попытался использовать условные операторы, но это производит истинное/ложное значение, и я хотел бы сохранить свою исходную переменную. Я уверен, что существует простой способ сделать это, но я, может казаться, не понимаю это. Совет относительно простого способа сделать это быстро?

Я имел что-то в виду как это:

x   x.range
3   0-5
4   0-5
6   6-10
12  11-15
9
задан Gregor 8 January 2018 в 23:04
поделиться

2 ответа

Ответ Яна ( 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
12
ответ дан 4 December 2019 в 07:14
поделиться
x <- rnorm(100,10,10)
cut(x,c(-Inf,0,5,6,10,Inf))
17
ответ дан 4 December 2019 в 07:14
поделиться