我不了解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.SASciiread.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,则可以看到为什么我使用“不可锯齿”这个词。

10-01 01:53