SAS中文论坛

标题: 如何将sas数据集名作为变量值? [打印本页]

作者: shiyiming    时间: 2012-5-13 16:07
标题: 如何将sas数据集名作为变量值?
大家好!
请教一个问题:
我有多个SAS数据集,这些数据集名的一部分是年月,且是连续有序的,由于每个数据集里没有一列时间变量,我想在每一个数据集里增加一个变量,这个变量的值就是所在数据集名字里的时间,如201101,请问该如何实现?

比如数据集 hr201101,我想在这个数据集里增加一个变量date,且让date=201101。
另外,这样的数据集有二十多个。

多谢!
作者: shiyiming    时间: 2012-5-14 21:35
标题: Re: 如何将sas数据集名作为变量值?
data hr201101;
x=1;
run;

ods output members=mem;
proc datasets lib=work;
quit;

proc sql;
select name
into :name
from mem
where num=1;
quit;

data hr201101;
set hr201101;
date=substr("&name",3,6);
run;
作者: shiyiming    时间: 2012-5-15 09:55
标题: Re: 如何将sas数据集名作为变量值?
[code:1pqzx2z9]/*假设你的逻辑库名为testlib*/
data _null_;
        retain prxId;
        if _n_=1 then prxId=prxparse('m/\d{6}$/');
        set sashelp.vstable(where=(libname='TESTLIB'));
        start=prxmatch(prxId,trim(memname));
        if start>0;
        call execute('data '||trim(libname)||'.'||memname||';set '||trim(libname)||'.'||memname||';length date $6;date ="'||substr(memname,start,6)||'";run;');
run;[/code:1pqzx2z9]
作者: shiyiming    时间: 2012-5-15 21:35
标题: Re: 如何将sas数据集名作为变量值?
byes 的方式高效精彩!
学习一下!




欢迎光临 SAS中文论坛 (http://www.mysas.net/forum/) Powered by Discuz! X3.2