我正在尝试使用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/
谢谢你的帮忙!
发布于 2015-10-07 17:40:16
从第一行可以看出,您需要某种控制文件来分隔各个变量。因此,通过在其他环境中使用PISA,我知道前三列对应于ISO 3字母的国家代码(例如,ALB)。下面是数字和字母,需要通过分隔它们来有意义地理解它们。您可以为此使用代码簿(https://pisa2012.acer.edu.au/downloads/M_stu_codebook.pdf),但这对于每个单独的变量都是一个真正的负担。为什么不在SPSS或sAS中下载并导入呢?这不是一个“圆滑”的解决方案,但如果没有控制文件,您将有很多手动工作要做。
发布于 2015-10-25 13:40:52
我只是用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$varnameOBS 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 1Gb,因此您将需要足够的RAM。
https://stackoverflow.com/questions/32591859
复制相似问题