«The Offender Based Transaction Statistics (OBTS)» (далее также – «OBTS», датасет) - серия датасетов, подготовленных бюро судебной статистики для сбора информации, фиксирующей путь взрослых[1] преступников от момента попадания их в систему уголовного правосудия США до их «выхода», будь то приговор или «оправдание». Указанная статистика состоит из всех дел, прошедших через уголовные системы штата за указанный календарный год. В нашем случае это 1990 год. Отдельным наблюдением в датасете является уголовное дело, закодированное уникальный ключом, для каждого дела в идеале мы должны знать 61 параметр, включая полицейский, прокурорский, судебный уровень и уровень вынесения приговора. Датасет включает в себя социально-демографические данные, данные о юридической квалификации дела на каждом этапе, дате и времени, исходе дела. Более подробная информация, описание всего датасета, иные необходимые сведения содержатся в исчерпывающем виде на официальном сайте проекта по ссылке: Offender Based Transaction Statistics (OBTS), 1990. Наше описание не ставит целью повторять сведения, уже описанные другими авторами.
[1] Не путать с понятием «совершеннолетний», т.к. по законам США за некоторые виды преступлений ответственность может наступать раньше 18/21 года
Выполнено в R с использованием RStudio.
Как может заметить исследователь, первоначальный датасет плохо заполнен, некоторые параметры не достигают и 50% заполненности. Это стало серьёзным препятствием для работы с OBTS. Поэтому команда приняла решение отсортировать наиболее эффективные и добросовестные округа.
В оригинальном датасете колонка V8 соответствует округу, V7 – штату. При этом названия штатов обозначены уникальными аббревиатурами, но округи обозначены неуникальными числовыми/число-буквенными/буквенными кодами.
То есть, чтобы получить в колонке V8 уникальный округ, надо было либо конкатенировать к коду название штата, либо привести коды к их реальным названиям. Команда приняла решение с целью повышения читаемости датасета пойти по второму пути.
Для этого мы с помощью RTabulizer извлекли и распознали страницы описания датасета, со словарём округов (сс. 72–81). Табулайзер не смог правильно распознать все пары код – округ, большая часть склеилась в таком формате: «000 [1]Округ000 Округ», то есть надо было разделить последнее слово и первые цифры. Для этого мы применили регулярные выражения.
В результате у нас появилось 10 датафреймов с двумя колонками, в каждой из которых содержалась пара код-округ. Часть пар не соответствовали общему виду пары, поэтому их пришлось редактировать руками. Но таких было немного. Данная часть работы неавтоматизированная, однако обнаружить проблемные пары не составит труда, проблема решается в R простым перезаписыванием значений.
Важно! Надо оставлять двойной пробел, чтобы сепаратор был универсальным – надо помнить это при редактировании данных. В будущем вам будет проще разделять пару код-округ на два столбца. Возможно, в вашей версии табулайзера пробел будет не двойной. Проверьте как эта программа разделила пару код-округ.
После этого каждый датафрейм надо было превратить из двуколоночного (вида код-пара|код-пара) в одноколоночный. Так как нам нужно сохранить логику словаря, чтобы соответствующий округ был в соответствующем штате надо было сохранить порядок пар «код округ», то есть присоединять пары следующим образом: «первый столбец первая строка, второй столбец первая строка и т.д.»
Мы получили 10 одноколоночных датафреймов, которые теперь соединяем в один. Чистим этот датафрейм от NA и пустых строк. Разбиваем датафрейм на две колонки по сепаратору двойного пробела.
У нас получился датафрейм с названиями штатов и парами код-округ. Теперь мы создаём колонку с названиями штата для каждой пары код-округ, оставшиеся в датафрейме названия штатов будет нам в качестве подсказки. Больше нам названия штатов, в отдельной строке не нужны. В нашем оригинальном датасете отсутствуют некоторые штаты. Строки с этими штатами мы тоже удаляем.