我不了解SAS,并且通常在R和Stata工作。最近,我下载了可从巴西政府公开获得的数据集,由于某种原因,他们使用SAS脚本以原始格式提供了该数据集,可通过以下方式读取该数据集:
DATA DOM (COMPRESS = YES);
INFILE "...¥T_DOMICILIO_S.txt" LRECL = 164 MISSOVER;
INPUT @001 TIPO_REG $2. /* TIPO DE REGISTRO */
@003 COD_UF $2. /* CモDIGO DA UF */
@005 NUM_SEQ $3. /* NレMERO SEQUENCIAL */
@008 NUM_DV $1. /* DV DO SEQUENCIAL */
…Etc etc…
RUN;
是否可以“将该语句转换为r的等效项?如果是,我应该寻找哪个函数?
最佳答案
有一个应用程序!好吧,R软件包 SAScii
,由顽强的Anthony Damico带给您。它具有两个功能:parse.SAScii
和read.SAScii
。我已经在美国口香糖CDC文件上成功使用了它。
install.packages("SAScii")
library(SAScii)
> parse.SAScii("test.sas")
varname width char divisor
1 TIPO_REG 2 TRUE 1
2 COD_UF 2 TRUE 1
3 NUM_SEQ 3 TRUE 1
4 NUM_DV 1 TRUE 1
Warning message:
In readLines(sas_ri) : incomplete final line found on 'test.sas'
-
然后,您需要在第二步中使用read.SAScii,但是您没有为该测试提供适当的测试文件。
输入文件“test.sas”为:
DATA DOM (COMPRESS = YES);
INFILE "...¥T_DOMICILIO_S.txt" LRECL = 164 MISSOVER;
INPUT @001 TIPO_REG $2. /* TIPO DE REGISTRO */
@003 COD_UF $2. /* CモDIGO DA UF */
@005 NUM_SEQ $3. /* NレMERO SEQUENCIAL */
@008 NUM_DV $1. /* DV DO SEQUENCIAL */
RUN;
如果您查看"twotorials" on Youtube by Anthony Damico或转到his website,则可以看到为什么我使用“不可锯齿”这个词。