假设在某个 library OUT 下面有多个数据,都以 ds_ 开头,想要合并所有数据,可以写:
data ds_all;
set out.ds_:;
run;
如果只想合并其中一部分数据,比如只合并 ds_1, ds_32 数据,有两种写法:
/*Method 1*/
data want; set out.ds_: indsname=indsname; if indsname=:'OUT.DS_1' or indsname=:'OUT.DS_32'; /*OR if scan(indsname,2,'.')='DS_1' or scan(indesname,2,'.')='DS_32'*/ run;
这里 indsname= 的作用是生成一个变量(here is indsname)并将SAS当前读入的数据的名字(out.ds_:)存储在这个变量中。这个变量不会在出现在生成的数据集里。可以通过显式定义将它显示出来:var=indsname;效果是:
VAR |
OUT.DS_1 |
OUT.DS_2 |
OUT.DS_3 |
… |
OUT.DS_32 |
这里=: 的作用是,the =: (equal-colon) was used to find all data set names that begin with DS_. it looks for strings that begin with whatever is in the quotes to the right of the =:
如果所有数据都是 DS_number, 那么有没有冒号结果都一样。如果数据是 DS_1, DS_2a, DS_11, … 则需要用 =:
另外如果数据前缀是 DS_1,想要通过DS_1: 找到 DS_11, DS_12, … 也是可以的。
第二种写法是:
/*Method 2*/
proc sql; select cats(libname,'.',memname) into :names separated by ' ' from dictionary.tables where libname="OUT" and memname in ('DS_1','DS_32'); quit; data want; set &names; run;
%put &names;
OUT.DS_1 OUT.DS_32
cats 的作用是连接字符串,并去掉字符串首尾空格。这里 libname 的值是OUT, memname 的值是的数据集的名字。
原文地址:http://www.cnblogs.com/zooz-logging/p/16862229.html
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请务用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员!
8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性