首页 > 其他分享 >2023-08-22 SAS数据集与Excel文件之间的批量转换 Batch File Exchange between SAS and Excel

2023-08-22 SAS数据集与Excel文件之间的批量转换 Batch File Exchange between SAS and Excel

时间:2023-08-22 21:55:51浏览次数:42  
标签:xlsx run 22 文件 Excel SAS data

参考资料:Batch File Exchange between SAS and Excel - the Magic of Call Execute

我们经常需要在 SAS 和 MS Excel 之间传输数据。默认情况下,SAS libname engine或 PROC IMPORT/EXPORT 只能在 SAS 和 Excel 之间传输单个文件。在多个文件的情况下,一个一个地传输文件会显得过于繁琐。

SAS CALL EXECUTE 具有两个功能:

  • 混合 SAS 数据步和 proc 过程;
  • 将 SAS 数据步值传递给 SAS 过程或宏参数。
    这两个功能使其成为动态数据处理和重复任务(例如 SAS 和 Excel 之间的批处理文件交换)的选择。

1 SAS批量读入多个Excel文件

1.1 批量读入多个Excel Sheets

示例程序如下:

/*将需读入文件定义为逻辑库*/
libname myexcel xlsx 'YourPath\YourFile.xlsx';

/*批处理*/
data _null_;
  set sashelp.vmember(where=(libname='MYEXCEL'));/*读取定义的逻辑库中sheet属性*/
  call execute
    ('data work.'||
     dequote(memname)||
    '; set myexcel.'||
    quote(dequote(memname))||
    'n; run;');
run;

1.2 批量读入多个Excel文件

filename dirlist pipe 'dir "YourPath\" /b';

data files;
  length fname $20;
  Infile dirlist truncover length= reclen;
  input fname $varying20. reclen;
  fname=scan(fname,1,'.');
run;

data _null_;
  set files;
  call execute('proc import datafile="YourPath\'||strip(fname)||'.xlsx"
                out=work.'||strip(fname)||'
                dbms=xlsx replace;
                run;');
run;

2 SAS批量导出多个Excel文件

2.1 批量导出多个数据集至一个Excel文件

%let mypath=YourPath;

data _null_;
  set sashelp.vmember(where=(libname='WORK' and memtype="DATA"));
  call execute('proc export data='||memname||'
                outfile="&mypath\combined.xlsx"/*导出至combined文件*/
                dbms=xlsx replace;
                sheet='||memname||';
                run;');
run;

2.2 批量导出为多个Excel文件

%let mypath=YourPath;

data _null_;
  length dsn $30;
  do dsn='class','company','cars';/*选择需导出的数据集*/
  call execute('proc export data=sashelp.'||dsn||'
                outfile="&mypath\'||strip(dsn)||'.xlsx"
                dbms=xlsx replace;
                run;');
  end;
run;

标签:xlsx,run,22,文件,Excel,SAS,data
From: https://www.cnblogs.com/pluuus230713/p/17649783.html

相关文章

  • 2023/8/22
    记录一下军训典中典原地踏步走,越踏越快齐步走,最后一步永远长半步队里的同学犯错,你也连带着受罚分两队做动作,做完的先休息,后做完的总是休息时间少很多唉,真的难蚌,这两天军训的教官基本上进度龟速隔壁排已经全学完了,我们排就会了个站军姿和罚蹲吐槽,天大食堂的物价真的令人发......
  • PYYZ8.22
    T1上来直接秒了组合数#include<bits/stdc++.h>#definelllonglong#definegtgetcharusingnamespacestd;inlinellread(){ llx=0,f=1;charch=gt(); while(!isdigit(ch)){if(ch=='-')f=-1;ch=gt();} while(isdigit(ch)){x=(x<<......
  • 20230822比赛
    T1CowPoetryDescription不为FarmerJohn所知的是,Bessie还热衷于资助艺术创作!最近,她开始研究许多伟大的诗人们,而现在,她想要尝试创作一些属于自己的诗歌了。Bessie认识N(1≤N≤5000)个单词,她想要将她们写进她的诗。Bessie已经计算了她认识的每个单词的长度,以音节为单位,并且她将......
  • 8.22 后记
    T1烧饼题,char类型最大为127T2暴力题,少考半个小时导致的少拿\(100\)分T3卡常题,别开vectorT4简单题,扫一遍\(O(m^2)\)总结一下,240min\(\rightarrow\)210min,360pt\(\rightarrow\)210pt......
  • 20230822巴蜀暑期集训测试总结
    T1很艰难的一道题,当然是过程很艰难。开始想到了一个关于贪心的思路,觉得应该不会这么简单,又继续想别的方法。过了一会只能回到贪心,推了一下式子,发现...好像贪不了,于是再次离开。又过了一会,回来再推一次式子,发现之前推错了,好在终于找到了正确的方向。想到了合并,但是不知道合并后......
  • 20230822-实现两盒子垂直水平居中定位方式
    24/100保存草稿发布文章加粗斜体标题删除线无序有序待办引用代码块运行代码资源绑定图片视频表格超链接投票导入导出保存撤销重做历史new模版使用富文本编辑器目录创作助手语法说明#代码部分```<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><meta......
  • 20230822-github实现AB仓库通信全过程
    第一步注册github账号首先打开自己得github网址https://github.com/用自己常用得邮箱注册一个个人得github账号不多赘述第二步安装git工具账号注册完毕之后需要安装git工具紧接着就是下一步下一步程序得安装注意不要安装再c盘即可当本地出现以上图标window上是shift+右键则......
  • 2023.8.22 模拟赛
    ABFSB一个长\(n(n\le1e5)\)的字符串\(S\),长\(m(m\le30)\)的字符串\(T\),\(S\)的每个位置有权值\(a_i\)。\(q(q\le1e5)\)次询问\(l,r\),求\(T\)作为一个子序列出现在\(S(l,r)\)中的所有方案中,\(T\)出现的位置的权值和。先考虑\(a_i=1\)。显然有\(f_{i,j}=......
  • 8.22 [CSP-S 2021] 交通规划 题解
    #include<bits/stdc++.h>usingnamespacestd;usingpii=pair<int,int>;constexprintN=3e5+5,S=2e3+5,K=1e2+5,INF=0x3f3f3f3f;intn,m,T,poi[N];inthed[N],nxt[N<<2],rch[N<<2],val[N<<2],idx;vo......
  • P9474 [yLOI2022] 长安幻世绘
    题目大意在元素互不相同的数列\(a\)中选出一个长度为\(m\)的元素互不相邻的子列,使得子列的极差最小。思路爆搜、\(dp\)肯定是过不了的,所以我们考虑固定某个值,赛时想到了固定最大或者最小值,然后找到另一个值,但是除了\(dp\)没想到好做法,比赛结束了才知道正解居然是同时固......