谁能帮我写一个R数据框作为SAS数据集?

问题描述 投票:0回答:5

在 R 中,我使用了 foreign 库中的 write.foreign() 函数,以便将数据帧写入 SAS 数据集。

write.foreign(df = test.df, datafile = 'test.sas7bdat', codefile = 'test.txt', package = "SAS")

SAS 数据文件已写入,但当我尝试在 SAS Viewer 9.1 (Windows XP) 中打开它时,收到以下消息 - “不支持 SAS 数据集文件格式”。

注意:我通常不熟悉 SAS,因此如果存在普通 SAS 用户都知道的答案,请原谅我的无知。

r sas dataset
5个回答
15
投票
带有选项

write.foreign

package="SAS"
实际上会写出一个以逗号分隔的文本文件,然后创建一个包含 SAS 语句的脚本文件以将其读入。您必须运行 SAS 并提交脚本才能将文本文件转换为 SAS 数据集。你的电话应该看起来更像

write.foreign(df=test.df, datafile="test.csv", codefile="test.sas", package="SAS")

注意不同的扩展名。此外,

write.foreign
将因子变量写为数字变量,并采用控制其外观的格式——即因子的 R 定义。如果您只想要字符表示,则必须在导出之前通过
as.character
转换因子。


8
投票

我也不是 SAS 用户,但我之前使用过

write.xport()
,而且效果很好。 我的粗略理解是SAS文件有两种类型,内部文件和XPORT文件。 XPORT 是在不同版本、架构等之间更兼容的。


0
投票

这是对 Hong Ooi 答案的编辑。

在R中:

library(foreign)

write.foreign(df=test.df, datafile="test.csv", codefile="test.sas", package="SAS")

在 SAS 中:

上传 test.csv 和 test.sas 文件。打开测试.sas。您可能需要编辑 write.foreign 函数输出的 test.sas 代码。对我有用的是更新

INFILE
行以包含图书馆/位置:
"/home/kristenmae0/test.csv"


0
投票

我知道这是一篇旧文章,但我最近遇到了类似的问题,我需要将一些 .csv 文件转换为 SAS7BDAT 和 XPT。 如果没有 SAS,我找不到任何好的例子。经过一番尝试,我找到了解决方案。

这是 GitHub 上的工作示例: https://github.com/AplosAnalytics/Aplos-File-Conversion-Tools/blob/main/src/export_to_sas.R

此代码会将 CSV 文件读取到数据框,然后使用

haven
库将其导出到 SAS。

我希望这可以帮助其他遇到同样问题的人。


-1
投票

您可以使用 SAS 轻松完成:只需使用 SAS/IML Studio 进行 SAS/IML (proc iml) 或 IMLPlus(面向对象版本)测试即可。

看这个: http://support.sas.com/documentation/cdl/en/imlsstat/63827/HTML/default/viewer.htm#imlsstat_statr_sect004.htm

或免费下载 SAS/IML Studio : http://www.sas.com/apps/demosdownloads/92_SDL_sysdep.jsp?packageID=000721 此版本的 SAS/IML Studio 提供了与 R 语言交互的功能。

© www.soinside.com 2019 - 2024. All rights reserved.