如何在 R 中使用 IOM 协议访问 SAS 服务器

时间:2021-05-03 20:24:00

标签: r server sas

我正在尝试将 SAS 数据读入 R,类似于此处的快速教程:https://josezea.wordpress.com/2019/05/02/connect-sas-server-from-r/

问题是我尝试连接的服务器使用 IOM 协议,RCurl 包中似乎不支持该协议。有没有人对在 R 中使用这些协议从 SAS 服务器读取数据有任何建议?它可以从文件路径或库中读取,都适用于我的场景。谢谢!

下面是我尝试在 R 中运行的代码:

library(RCurl)
library(haven)

protocol <- "IOM"
server <- "server.com:5555"
userpwd <- "username:password"
sasfileRoute <- "/path_to_data/bonus_schedule.sas7bdat"

## Read Data as data frame

url <- paste0(protocol, "://", server, sasfileRoute)
binary_sasdata <- getBinaryURL(url = url, userpwd=userpwd)
df_data =  read_sas(binary_sasdata)

2 个答案:

答案 0 :(得分:3)

我认为您误解了链接页面的作用。它展示了如何使用 R 读取 SAS 数据集 - 但不连接到 SAS。

SAS 数据集通常存储为 .sas7bdat 文件。您应该通过 SFTP 或网络共享或类似方式连接以访问数据集;当然,如果数据集存储在 LASR 服务器或其他内存位置,这将不起作用。

如果您需要连接到 SAS 本身(以执行代码或访问内存数据),如果 SAS 服务器是 SAS Viya 服务器,您可以这样做。有关更多信息,请参阅 R SWAT;它使用 SAS 的 API 来满足您的需求。

否则,您必须从 R 内部运行 SAS 可执行文件(如果您有权访问该版本的 SAS),或者让 SAS 用户从 SAS 内部为您导出数据。我不熟悉通过 R 直接连接到 SAS 9 的方法,评论中的链接似乎已经过时(至少 CRAN 似乎不再有那个包了)。

SASPy 确实允许 Python 执行与 SAS 9.4 类似的操作,因此如果您拥有 SAS 9.4,那也许这是一条更好的路线。

答案 1 :(得分:0)

IOM 是其集成技术产品使用的 SAS 协议。找到文件的网络路径并使用它,而不是 IOM。在 SAS 网站上查看使用 IOM(C#、Java、PowerShell 等)的资源。通常,IOM用于代码提交和SAS对象管理。