我正在尝试将 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)
我认为您误解了链接页面的作用。 它展示了如何使用 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,也许这是一个更好的途径。
IOM 是其 Integration Technologies 产品使用的 SAS 协议。找到文件的网络路径并使用它,而不是 IOM。查看 SAS 网站上使用 IOM(C#、Java、PowerShell 等)的资源。通常,IOM 用于代码提交和 SAS 对象管理。
正如 @Joe 所说,连接 SAS 最简单的方法通常是通过 Python 包
saspy
。 sasquatch
允许您使用 reticulate 连接到 saspy、启动会话、交互式地使用 SAS、在四开文档中编织 SAS 块以及在 SAS 和 R 之间传递变量。如果您设置了 saspy
,则您可以已经完成了最困难的部分。如果您在设置 saspy
时遇到困难,此视频可能会有所帮助。
sasr
,它允许您连接 SAS 和 R,但它没有一些交互功能或 knitr
引擎。还有 configSAS
几乎只专注于 knitr
支持。
免责声明:我是
sasquatch
的开发者,并且 sasquatch
目前还很新。