Как прочитать этот конкретный файл .dat в R? - PullRequest
2 голосов
/ 28 апреля 2020

Я успешно загрузил данные дополнения CPS отсюда:

https://www.census.gov/data/datasets/time-series/demo/cps/cps-supp_cps-repwgt/cps-voting.2018.html

и после распаковки у меня теперь есть файл: nov18pub.dat

Я пробовал много разных форм read.table и read.csv на этих данных, но я не могу просмотреть эти данные. Кто-нибудь может мне помочь с превращением этих данных в работоспособный df?

Ответы [ 2 ]

1 голос
/ 28 апреля 2020

Это похоже на файл данных фиксированной ширины.

Если вы прочитали первые 10 строк и посмотрите на длину:

library(readr)

con = file("nov18pub.dat", "r")
line = readLines(con, n = 10)
num_char <- nchar(line)
close(con)

num_char
[1] 1018 1018 1018 1018 1018 1018 1018 1018 1018 1018

, то это будет 1018 символов.

Вы можете использовать read.fwf из пакета readr для чтения в файле. В этом примере первые 5 столбцов считываются (а остальные игнорируются с использованием NULL).

read.fwf("nov18pub.dat",
         widths = c(15,2,4,2,3,rep(NULL, num_char - 26)),
         header = FALSE,
         col.names = c("Household_ID", "Month", "Year", "Line_Number", "Final_Outcome"),
         colClasses = c("character", rep("numeric", 4))
)

       Household_ID Month Year Line_Number Final_Outcome
1   000110118096587    11 2018           2           201
2   000110118096587    11 2018           2           201
3   710004140617571    11 2018           1           201
4   761077501690006    11 2018           1           201
5   761077501690006    11 2018           1           201
6   067091706007561    11 2018           1           201
7   067091706007561    11 2018           1           201
8   067091706007561    11 2018           1           201
9   067091706007561    11 2018           1           201
10  691715007600067    11 2018           2           201
...

В этом документе содержатся подробные сведения о ширине столбцов и кодах для каждой переменной:

https://www2.census.gov/programs-surveys/cps/techdocs/cpsnov18.pdf

Там также упоминается формат:

Структура: Rect angular.

Размер файла : 143 050 логических записей; Длина логической записи в 968 символов.

Однако при наличии дополнительных данных длина записи может составлять от go до 1018.

1 голос
/ 28 апреля 2020

Попробуйте следующее:

Импорт набора данных> Из текста (чтение)> Обзор> выберите файл > Delmiter> выберите пробел > Импорт

Просто нужно попробовать разные разделители. Пробелы сработали для меня.

Счастливые данные.

...