Чтение данных PISA в R - ошибка read.table

Я пытаюсь прочитать данные из исследования PISA 2012 ( http://pisa2012.acer.edu.au/downloads.php) в R, используя функцию read.table. Это код, который я пробовал:

pisa  <- read.table("pisa2012.txt", sep = "")    

к сожалению, я продолжаю получать следующее сообщение об ошибке:

Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,  
: line 2 did not have 184 elements    

Я пытался установить

header = T

но затем получите следующее сообщение об ошибке

Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,  
 :line 1 did not have 184 elements

Наконец, вот как выглядит файл.txt...

http://postimg.org/image/4u9lqtxqd/

Спасибо за вашу помощь!

2 ответа

Из первой строки видно, что для разграничения отдельных переменных вам понадобится какой-то контрольный файл. Итак, из работы с PISA в других средах я знаю, что первые три столбца соответствуют буквенному коду страны ISO 3 (например, ALB). Далее следуют цифры и буквы, которые нужно понимать смыслом, разделяя их. Вы можете использовать кодовую книгу для этого ( https://pisa2012.acer.edu.au/downloads/M_stu_codebook.pdf), но это реальный подход для каждой переменной. Почему бы не скачать в SPSS или sAS и импортировать? Не "гладкое" решение, но без контрольного файла вам придется много работать вручную.

Я просто читаю файлы, используя пакет readr. Итак, что вам понадобится: пакет readr, файл TXT, пакет SAScii и связанный файл sas.

Итак, допустим, вы хотите прочитать файлы учеников. Затем вам понадобятся следующие файлы: INT_STU12_DEC03.txt и INT_STU12_DEC03.sas.

##################### READING STUDENT DATA  ###################
## Loading the dictionary
dic_student = parse.SAScii(sas_ri = 'INT_STU12_SAS.sas')

## Creating the positions to read_fwf
student <- read_fwf(file = 'INT_STU12_DEC03.txt', col_positions = fwf_widths(dic_student$width), progress = T)
colnames(student) <- dic_student$varname

OBS 1: Поскольку я использую Linux, мне нужно было удалить первые строки из файла sas и изменить кодировку на UTF-8.

OBS 2: Удаленные строки были:

libname  M_DEC03 "C:\XXX"; 
filename STU "C:\XXX\INT_STU12_DEC03.txt"; 
options nofmterr;

OBS 3: набор данных занимает около 1 Гб, поэтому вам потребуется достаточно оперативной памяти.

Другие вопросы по тегам