2

我正在尝试使用 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/

谢谢你的帮助!

4

2 回答 2

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,因此您需要足够的 RAM。

于 2015-10-25T05:40:52.157 回答
0

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

于 2015-10-07T09:40:16.120 回答