Как создать факторную переменную с неравными группами в R? Получать предупреждение - PullRequest
3 голосов
/ 08 февраля 2020

Я пытаюсь создать факторную переменную с 3 группами: 0, 1-2 и 3+.

Я использовал функцию cut для создания неравных разрывов:

set.seed(2) 
x <- rpois(n = 1000, lambda = 1.5) 

breaks <- c(0, 1, 2, 3:max(x))

cut(x, breaks = breaks, right = TRUE)


## But this gives me the following: 

Levels: (0,1] (1,2] (2,3] (3,8]


## I tried this as well: 

breaks <- c(0, seq(1, 2, by = 1), 3:max(x))


## But that gives me: 

Levels: (0,1] (1,2] (2,3] (3,4] (4,5] (5,6] (6,7] (7,8]

edit:

Ниже приведены правильные уровни:

breaks <- c(0, 1, 3, Inf) 
cut(x, breaks, right = FALSE, include.lowest = TRUE) 

Levels: [0,1) [1,3) [3,Inf]

Но я получаю сообщение об ошибке, что мой уровень [2] дублируется:

x.factor <- factor(x, levels = cut(x, breaks = c(0, 1, 3, Inf), right = FALSE, 
                                       include.lowest = TRUE))

Не уверен, откуда go отсюда .. какие-нибудь идеи?

1 Ответ

2 голосов
/ 08 февраля 2020

Здесь мы можем изменить breaks с большим числом в конце и указать labels

grp <- cut(x, breaks = c(0:2, Inf), right = TRUE, 
        labels = c('0', '1-2', '3+'), include.lowest = TRUE)
levels(grp)
#[1] "0"   "1-2" "3+" 

head(x)
#[1] 0 2 2 0 4 4

head(grp)
#[1] 0   1-2 1-2 0   3+  3+ 
#Levels: 0 1-2 3+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...