【问题标题】:Reading PISA data into R - read.table error将 PISA 数据读入 R - read.table 错误
【发布时间】:2015-12-12 01:14:49
【问题描述】:

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

感谢您的帮助!

【问题讨论】:

  • 您的sep 值在这里描述了没有分离。有固定的分离值吗?看起来好像是制表符,在sep 争论中用“\t”表示。
  • 如果我在 sep 参数中使用“\t”,R 会加载数据,但只会在 data.frame 中检测到一个变量 =/
  • 看图片,很难说第一行是什么。尝试使用readLines 将每一行数据读入 R 以检查第一行实际上是什么(在文本编辑器中打开大文本文件可能会因为太多的换行和空格而产生误导)。此外,如果您可以发布前几行数据,人们会得到更多帮助。
  • 谢谢海森堡。我试过 "readLines("pisa2012.txt", n = 3)" 这就是我得到的:postimg.org/image/hhfsxxei1

标签: r read.table pisa


【解决方案1】:

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

【讨论】:

  • 请格式化您的答案,以便OP可以清楚地理解
【解决方案2】:

我刚刚使用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。

【讨论】:

    猜你喜欢
    • 2021-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-26
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    • 1970-01-01
    相关资源
    最近更新 更多