我对 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
。我在 US gummint 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你可以明白为什么我用了“不屈不挠”这个词。
关于r - 是否可以将 SAS infile 语句转换为 R 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23505908/