全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2324 3
2018-03-01
您好,我有1000个数据集,每个数据集的名字都无规则,但是内容都差不多,每个数据集大概像这样
data have ;inputYEAR SALE ID $5.;datalines;2001  12  ab342001  10  12342001  14  ab342001  10  22342002  10  12342002  10  ab342002  10  22342002  10  22342001  12  ab342001  10  12342001  14  22342001  10  22342002  10  ab342002  10  12342002  10  ab342002  10  2234;run;

我想求的是,如果同一年中,把所有ID以字母开头的SALE相加求和
这样的步骤我知道用sql可以实现,可是该怎么重复到1000个数据集上啊?因为每个数据集名称都不规则,所以不知道宏该怎么写QAQ
谢谢了



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2018-3-2 00:52:55
Check the sample here:
http://support.sas.com/kb/48/810.html

use PROC content to get all dataset names out, then use macro loop to do your data summary for all datasets.
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-3-2 08:27:34
sbyanshuai 发表于 2018-3-1 08:16
您好,我有1000个数据集,每个数据集的名字都无规则,但是内容都差不多,每个数据集大概像这样
data have  ...
利用数据字典,获取数据名称,赋值给宏变量,做循环,可参考此文中http://mp.weixin.qq.com/s/1vL9KmBx4ymDIxrO3NcGVw
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-3-3 03:38:51
谢谢楼上两位,我刚发完这个帖子就琢磨出来了。
复制代码

%macro doit(memname);
proc sql;
create table want.&memname as
select YEAR,
    sum(SALE*anyalpha(first(ID))) as SALE1,
    sum(SALE) as TOTALSALE,
from have.&memname
group by YEAR;
quit;
%mend doit;

data _null_;
set work.member;      /* this is a list I created before hand, it contains all the member name of the datasets I have*/
call execute('%doit('!!memname!!');');
run;这是我的代码。可能最后不太准确,不过反正得到我想要的了。谢谢大家
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群