使用system()命令在R中执行SAS程序

时间:2016-05-23 16:20:31

标签: r sas

我的公司最近转换为SAS而没有购买SAS SHARE许可证,因此我无法将ODBC插入服务器。我不是SAS用户,但我正在编写一个程序,需要从服务器查询数据,我想让我的R脚本调用.sas程序来检索数据。我认为这可以使用

df <- system("sas -SYSIN path/to/sas/script.sas")

但我似乎无法使其发挥作用。我花了几个小时在谷歌上,并决定在这里问。

错误消息:

running command 'sas -SYSIN  C:/Desktop/test.sas' had status 127 

谢谢!

1 个答案:

答案 0 :(得分:5)

假设您的sas程序生成一个sas数据集,您需要做两件事:

  1. 通过shellsystem,让SAS运行程序,但在包含sas可执行文件的目录中首先运行cd,以防目录不在PATH环境中变量

    setwd("c:\\Program Files\\SASHome 9.4\\SASFoundation\\9.4\\")
    return.code <- shell("sas.exe -SYSIN c:\\temp\\myprogram.sas")

    请注意,返回的不是数据本身,而是操作系统发出的代码,告诉您任务是否成功。代码0表示任务已成功。

    在sas程序中,我所做的就是在sashelp.baseball目录中创建c:\temp的副本。

  2. 使用为此编写的其中一个包将生成的数据集导入R. Haven是最新的和IMO最可靠的。

    # Install Haven from CRAN:
    install.packages("haven")
    # Import the dataset:
    myData <- read_sas("c:\\temps\\baseball.sas7bdat")

  3. 你应该拥有它!