Создать новую категориальную переменную из существующей переменной - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть переменная "PULocation", которая представляет собой набор целых чисел от 1 до 265. Каждое число представляет уникальное местоположение в Нью-Йорке. Тогда каждая локация находится в одном из районов "Бронкс", "Бруклин", "ВПВ", "Манхэттен", "Квинс", "Статен-Айленд" или "Неизвестно". В моем наборе данных у меня есть только переменная PULocation, определенная целыми числами, и у меня есть отдельная информация, чтобы знать, что представляет каждое целое число. Я хочу создать отдельную переменную, которая определяет район, а не конкретное местоположение, проблема в том, что целые числа не организованы по районам, а разбросаны. Я включил приведенное ниже отображение, чтобы показать, что я пытаюсь объяснить.

Я пробовал это cab_sample $ PUBorough <- ifelse (cab_sample $ PULocationID == с (3,18,20,31,32,46,47,51,58,59,60,78, 81,94,119,126,136,147,159,167,168,169, 174.182.183.184.185.199.200.208.212.213, 220,235,240,241,242,247,248,250,254,259), "Bronx", "НИЧЕГО") Но я получаю это сообщение об ошибке обратно </p>

Предупреждающее сообщение: В cab_sample $ PULocationID == c (3, 18, 20, 31, 32, 46, 47, 51, 58,: длинная длина объекта не кратна короткой длине объекта

Есть ли способ сделать это сопоставление?

Это отображение каждого целого числа

enter image description here

1 Ответ

0 голосов
/ 06 ноября 2018

Каждое label соответствует интервалу между двумя последовательными значениями (например, Манхэттен - это интервал 102-150) в вашем векторе breaks.
Поэтому вы можете использовать функцию findInterval, чтобы проверить, в каком интервале (то есть, в каких районах) находится каждое целое число вашего PULocation вектора. Затем вы можете индексировать вектор меток с помощью индексов интервалов, возвращаемых findInterval:

cab_data$borough <- labels[findInterval(cab_data$PULocation, breaks)]

А с dplyr:

cab_data %>% mutate(borough = labels[findInterval(PULocation, breaks)])

С аргументом функции left.open (логическим) вы можете решить, хотите ли вы включить в интервал левый разрыв каждого интервала или нет.

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