将PISA数据读入R - read.table错误

时间:2015-09-15 17:10:44

标签: r read.table pisa

我正在尝试使用read.table函数将PISA 2012研究中的数据(http://pisa2012.acer.edu.au/downloads.php)读入R中。这是我试过的代码:

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 个答案:

答案 0 :(得分:0)

您可以从第一行看到您需要某种控制文件来分隔各个变量。因此,从在其他环境中使用PISA开始,我知道前三列与ISO 3字母国家代码(例如,ALB)相对应。接下来是数字和字母,需要通过分离它们以一种有意义的方式理解。您可以使用代码簿(https://pisa2012.acer.edu.au/downloads/M_stu_codebook.pdf),但这对每个变量都是真正的负担。为什么不下载SPSS或sAS并导入?不是一个“光滑”的解决方案,但没有控制文件,你需要做很多手工工作。

答案 1 :(得分:0)

我刚刚使用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:数据集大约需要1Gb,因此您需要使用大量的内存。