#r
#r
Вопрос:
В настоящее время я пытаюсь импортировать данные Национальной системы отчетности на основе заболеваемости (NIBRS) за 2019 год в R. Данные поступают в текстовом формате ASCII, и до сих пор я пробовал readr ::read_tsv и readr ::read_fwf. Однако, похоже, я не могу правильно импортировать данные — read_tsvпоказывает только 1 столбец, в то время как read_fwf нужны аргументы столбца, которые я не понимаю, как расшифровать на основе текстового файла.
Вот ссылка на NIBRS. Я использовал загрузки основного файла для загрузки архивированного файла для NIBR в 2019 году.
Моя общая цель — иметь типичный фрейм данных / tibble для этого набора данных, в котором имена столбцов соответствуют типу преступления, а строки — количеству инцидентов.
Я видел несколько других примеров импорта этих данных через эту страницу справки, но их копии данных охватывают только период до 2015 года (мои данные должны находиться в диапазоне от 2015-2019).
.
Ответ №1:
Используйте read.fwf()
. Здесь указаны значения ширины столбцов
Комментарии:
1. Я ценю быстрый ответ. Я попытался
read.fwf(pathname, widths = c(10,10), col.names = c("AGENCY_ID","INCIDENT_ID")
попытаться получить столбцы AGENCY_ID и INCIDENT_ID из таблицы NIRBS_INCIDENT в словаре данных, на который вы ссылались. R все еще работает через несколько минут, что, я полагаю, означает, что я что-то сделал неправильно. Я предполагаю, что мне нужно указать таблицу, но я не вижу этого в документации для read.fwf. Я вижу, что это относится к read.table, но это не похоже на то, что мне нужно. У вас есть пример, которому я могу следовать, используя пару столбцов?
Ответ №2:
Мы можем использовать read_fwf
с column_positions
library(readr)
read_fwf(filename, column_positions = c(2, 5, 10))
Комментарии:
1. Я попытался использовать следующий код:
nibrs <- read_fwf(file , fwf_positions(c(4,2,100), c("ACTIVITY_TYPE_ID","ACTIVITY_TYPE_CODE","ACTIVITY_TYPE_NAME")))
для первых 3 столбцов в словаре данных, на которые ссылается @bcarlsen. Это вернуло сообщение об ошибке. У вас есть небольшой пример фрагмента кода, чтобы получить пару указанных столбцов?