Разбивая значения на категории - PullRequest
0 голосов
/ 09 марта 2020

Пожалуйста, мне нужна помощь в исправлении кода, приведенного ниже, я пытаюсь разбить данные на 4 категории в зависимости от того, в какой квантиль они попадают, но получается что-то другое. Вывод

for(i in data[[2]]){
 if(i>=min(data$PI) & i<quantile(data$PI, probs = .25)){
        data[[2]] = "Low income"
    }

   else if (i>=quantile(data$PI, probs = .25) & i<quantile(data$PI, probs = .5)){
        data[[2]] = "Average income"
    }

   else if(i>=quantile(data$PI, probs = .5) & i<quantile(data$PI, probs = .75)){
        data[[2]] = "High income"
    }
    else{
        data[[2]] = "Very high income"
    }

}

после выполнения приведенного ниже кода дает только одну категорию вместо 4

table(data[[2]])

Низкий доход 1050

1 Ответ

2 голосов
/ 09 марта 2020

Как уже упоминалось @Edward, вы можете использовать cut или findInterval, чтобы сделать это без al oop. Попробуйте:

data$category <- c("Low income","Average income","High income","Very high income")
                 [findInterval(data$PI, quantile(data$PI, c(0.25, 0.5, 0.75))) + 1]

Это присваивает столбцу значения «Низкий доход», «Средний доход» и т. Д. c значение category на основе диапазона, в котором находится значение PI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...