我有一些来自人口普查的微数据文件存储为 .txt 并以 ASCII 编码。
当我在文本编辑器中打开它们时,我得到如下信息:1100015110001500100100003624008705865085282310200600101011022022 14 444231
等
由于我对 ASCII 数据的制表没有经验,我想知道是否有任何方法可以用 R 和/或我需要什么类型的补充软件来完成这项工作。
实际上,起初我想对我的数据进行“正常”查看,也就是说,如果可能的话,将其视为表格(文件大小在 40mb 到 500mb 之间变化)。然后我想做一些简单的计算,然后将结果存储为 csv。在其他上下文中使用它。
谁能给我一些建议?
最佳答案
这个巴西人口普查网站提供了一个 SAS 输入脚本。仅使用 SAS 导入脚本导入 ASCII 数据集的最快方法是使用 the SAScii package 。您可以在 this zipped file 中找到 SAS 导入脚本——它是 INPUT.txt。请注意,这些 SAS 导入指令的 INPUT 块直到第四行才开始,因此您的 beginline
参数将为 4。首先使用 ?parse.SAScii
测试您是否正确读取了 SAS 脚本
library(SAScii)
parse.SAScii( "INPUT.txt" , beginline = 4 )
一旦您看到它正确打印了列名和宽度,您就可以使用
?read.SAScii
函数将您的文本文件直接读入 R 数据框x <- read.SAScii( "filename.txt" , "INPUT.txt" , beginline = 4 )
head( x )
如果您的文件太大而无法完全读入 RAM,您可以将其读入 SQLite 数据库。使用
read.SAScii.sqlite()
函数不是在 SAScii 包中,而是在 my github account here 中——它只是 read.SAScii() 函数的一个微小变化,但它不会使 RAM 过载。您可以在此 united states government survey data set website 的下载脚本中看到其用法示例。有关 SAScii 包的更多详细信息,请查看 this overview
关于r - 在 R 中处理 ASCII,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13972024/