全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
5565 11
2013-08-20
悬赏 1 个论坛币 已解决
程序截部分如下:我尝试编了一段,大括号括起来了,不过不行,请高手指点
%macro excelexp(code);
data finacenew;
set finace;
if code NE "&code" then delete;
keep code month year transaction_yuan;
/*if missing(code)=1 then continue;!!!!!这里肿么编?*/
       {%if &obscount =0 %then %do;
          continue;
              %end;
        run;}
...*其他代码
%mend excelexp;

%macro exec(i);
%do j=1 %to &i;
%excelexp(code=&j);
%end;
%mend exec;

%exec(i=4);

易丹 2013-08-20


最佳答案

rickyking 查看完整内容

your question is still not that clear. however : you can use this code to create a macro variable that determines if the dataset is nil :once &obs_count is equal to 0, it is an empty data set. you can apply a macro if-then :
二维码

扫码加我 拉你入群

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

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

全部回复
2013-8-20 12:05:43
陶然 发表于 2013-8-20 16:41
补充,循环应该这么写的:
%macro exec(i);
%do j=1 %to &i;
your question is still not that clear. however :

you can use this code to create a macro variable that determines if the dataset is nil :
复制代码
once &obs_count is equal to 0, it is an empty data set. you can apply a macro if-then :
复制代码
二维码

扫码加我 拉你入群

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

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

2013-8-20 14:55:52
我面对的实际问题是:循环导入excel文件,但是有一些编号是缺失的,例如:000001.SZ, 000002.SZ, 000004.SZ, 000005.SZ, 000006.SZ...有没有办法不导入那些不存在的excel;我想的是判断导入后的集合为空集,然后跳出循环。
二维码

扫码加我 拉你入群

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

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

2013-8-20 15:56:29
不懂你的问题
写详细一点
二维码

扫码加我 拉你入群

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

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

2013-8-20 16:11:51
rickyking 发表于 2013-8-20 15:56
不懂你的问题
写详细一点
让我组织一下语言
二维码

扫码加我 拉你入群

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

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

2013-8-20 16:38:16
e.g.:
%macro a(i);
data finance01;
set finance; //这里finance是对绝大部分股票的信息概述的一个数据,股票编号用变量code表示,我这里简单
                       假设是从1,2,3...(字符型)编号,但是有一些号码缺失
if code NE "&i" then delete;  //只留含第“i”只股票的描述信息
PROC IMPORT OUT= WORK.FINANCE001 //这里文件夹里有2000个excel表格,表格名字为:1,2,3,4...但是
                                                           也有缺失(如没有名称为3的表格)
            DATAFILE= "D:\Eco\Finance\按月逐个A股成交量、金额等\&i.
.xls"
            DBMS=EXCEL REPLACE;
     RANGE="'&i$'";  //这一步引用了宏变量
     GETNAMES=YES;
     MIXED=NO;
     SCANTEXT=YES;
     USEDATE=YES;
     SCANTIME=YES;
RUN;
proc sort data=finance01;
by year month;
run;
proc sort data=finance001;
by year month;
run;
data f001Mf01;
merge finance001 finance01;
by year month;
run;
/*接下来是将f001Mf01 输出为excel表格以及其他运算*/
%mend a;
%a(2000)
问题是:我的总表中数值并不是连续的,以及文件夹中excel表格里文件名(数字)也不是连续的,我的构想是1或2成立时,跳出宏中的该步循环,其中1:if finance01 为空集;2:finance001为空集。
不知道是否清楚,求指点
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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