在 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 用户都知道的答案,请原谅我的无知。
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
转换因子。
我也不是 SAS 用户,但我之前使用过
write.xport()
,而且效果很好。 我的粗略理解是SAS文件有两种类型,内部文件和XPORT文件。 XPORT 是在不同版本、架构等之间更兼容的。
这是对 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"
我知道这是一篇旧文章,但我最近遇到了类似的问题,我需要将一些 .csv 文件转换为 SAS7BDAT 和 XPT。 如果没有 SAS,我找不到任何好的例子。经过一番尝试,我找到了解决方案。
这是 GitHub 上的工作示例: https://github.com/AplosAnalytics/Aplos-File-Conversion-Tools/blob/main/src/export_to_sas.R
此代码会将 CSV 文件读取到数据框,然后使用
haven
库将其导出到 SAS。
我希望这可以帮助其他遇到同样问题的人。
您可以使用 SAS 轻松完成:只需使用 SAS/IML Studio 进行 SAS/IML (proc iml) 或 IMLPlus(面向对象版本)测试即可。
或免费下载 SAS/IML Studio : http://www.sas.com/apps/demosdownloads/92_SDL_sysdep.jsp?packageID=000721 此版本的 SAS/IML Studio 提供了与 R 语言交互的功能。