一个很好的替代方案是 package readr
,这是一种读取固定列宽数据的极快解决方案。更多信息在readr
这里。
因此read.SAScii
,您可以使用基于readr
. 像这样:
# Load Packages
library(readr)
library(SAScii)
library(data.table)
# Parse input file
dic_pes2013 <- parse.SAScii("INPUT.txt")
setDT(dic_pes2013) # convert to data.table
# read to data frame
pesdata2 <- read_fwf("./Dados/PES2013.txt",
fwf_widths(dput(dic_pes2013[,width]),
col_names=(dput(dic_pes2013[,varname]))),
progress = interactive()
)
我刚刚在 1.2 分钟内读取了包含 243 个变量的 240 万条记录(文件Amostra_Pessoas_35_outras.txt
)。
附言。如果您没有这些input.txt
文件,这里是关于如何创建它们的简短脚本。
请注意,某些变量有小数,这在此处发布的答案提供的解决方案中未包含(至少到目前为止)。考虑到这一点,我会在此处R
推荐此脚本,它将帮助您下载 2010 年巴西人口普查数据集,将它们读入数据框并将它们保存为文件。.csv