sas - 如何导入压缩的“.sas7bdat”文件?
问题描述
我有一个sas7bdat格式的文件,但它是压缩的。
我可以解压缩文件并处理它,但这会让我失去硬盘空间和时间。
所以我在 SAS 上尝试了这段代码:
filename myfile ZIP 'C:\...\data.zip' member="data.sas7bdat" ;
data yoyo;
infile myfile (data.sas7bdat);
input;
put _infile_;
run;
但是我在 WORK 库中得到了一个空的 yoyo 表。
如何成功导入 data.sas7bdat ?
谢谢,
解决方案
您需要先解压缩数据集,然后 SAS 才能使用它。所以你需要找一个有足够空间存放完全展开的文件的地方。
请注意,您的代码试图在 ZIP 文件中指定文件的成员名称两次。你应该只做一次。将文件引用指向聚合位置并在引用中使用成员名称。或者将文件引用指向单个成员,然后只使用文件引用。
这是一种将文件展开到您当前的 WORK 文件夹中的方法。
%let member=data.sas7bdat;
filename in zip 'C:\...\data.zip' member="&member" recfm=n;
filename out "%sysfunc(pathname(work))/&member" recfm=n;
data _null_;
rc=fcopy('in','out');
run;
您现在可以使用名称 WORK.DATA 处理该文件。
proc print data=work.data(obs=1); run;
如果您想直接从 ZIP 文件中读取数据,那么它需要是原始(文本)数据或流格式,如 SAS V5 XPORT 文件。
推荐阅读
- java - 如何在 Java 中序列化/反序列化 OpenCv Mat?
- maven - 在 Maven 项目中使用 Selenium
- node.js - “。” 不是命令或蝙蝠尝试为项目服务时
- java - JavaFX TableView 不更新?
- mysql - 将输出数据插入新表
- lambda - 清空意图中的所有槽值
- spring-boot - 如何显示/启用在 igniterepository 的 Spring Boot 数据中执行的查询日志?我们有 Apache ignite 存储库的任何特定属性吗?
- swift - 如果我在我的应用程序中使用 UIWebview,应用程序商店会拒绝它,因为它已被正式弃用?
- mysql - 如何使用数组指针从 Perl 中的 MySQL 查询中获取多条记录?
- pandas - 使用 load_table_from_dataframe() 存储具有日期时间对象的数据帧时的架构冲突