楼主: dream9876
4194 13

【求助】用宏追加表(表名日期格式) [推广有奖]

  • 1关注
  • 0粉丝

大专生

91%

还不是VIP/贵宾

-

威望
0
论坛币
2741 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
2681 点
帖子
29
精华
0
在线时间
93 小时
注册时间
2014-10-25
最后登录
2018-9-25

楼主
dream9876 发表于 2015-4-10 11:12:40 |AI写论文
8论坛币
有35张表,表名分别为ds201001-ds201211,表结构完全一样,怎么才能用宏的方法将35张表合并追加。
目前遇到的困难是如何才能让循环按照日期格式进位。求大神帮忙。。。。
%macro set;
data ds;
set %do i=1 %to 35;
  *******;
%end;
%mend set;

%set;

最佳答案

lpclimber 查看完整内容

楼主参考下这一段,希望你能用上 data _null_; /* The following statement creates expected results. */ do i=0 to 34; date1=intnx('month', '1jan2010'd, i, 'same'); put date1= yymmn6. ; end; run;
关键词:Macro Data Set End MEN 如何

沙发
lpclimber 发表于 2015-4-10 11:12:41
楼主参考下这一段,希望你能用上


data _null_;
      /* The following statement creates expected results. */
do i=0 to 34;
   date1=intnx('month', '1jan2010'd, i, 'same');  
   put date1= yymmn6. ;
  end;
run;

藤椅
dream9876 发表于 2015-4-10 11:40:56
帮帮忙呀,各位,脑袋想的都要秀逗了,再次谢过各位大神了

板凳
teqel 发表于 2015-4-10 23:09:09
001-211 不是211个吗?

报纸
dream9876 发表于 2015-4-11 11:06:58
teqel 发表于 2015-4-10 23:09
001-211 不是211个吗?
不是啊,文件名代表的意思是从2010年01月到2012年11月的,所以是35张表,因此宏在循环的时候要按照日期的格式来循环,因此很头痛

地板
lpclimber 发表于 2015-4-11 12:55:47
data _null_;
      /* The following statement creates expected results. */
do i=0 to 34;
   date1=intnx('month', '1jan2010'd, i, 'same');  
   put date1= yymmn6. ;
  end;
run;

结果如下:
date1=201001
date1=201002
date1=201003
date1=201004
date1=201005
date1=201006
date1=201007
date1=201008
date1=201009
date1=201010
date1=201011
date1=201012
date1=201101
date1=201102
date1=201103
date1=201104
date1=201105
date1=201106
date1=201107
date1=201108
date1=201109
date1=201110
date1=201111
date1=201112
date1=201201
date1=201202
date1=201203
date1=201204
date1=201205
date1=201206
date1=201207
date1=201208
date1=201209
date1=201210
date1=201211

因为我只是SAS入门,还不懂macro,楼主你自行调整下代码,应该可以用上

7
dream9876 发表于 2015-4-11 14:26:10
lpclimber 发表于 2015-4-11 12:58
楼主参考下这一段,希望你能用上
恩,真心感谢~

8
dream9876 发表于 2015-4-11 23:28:28
帮忙看看,这个错在哪里呀。。。。

data hebing;
do i=2010 to 2011;
do m=01 to 12;
/*mth=mdy(m,1,i);*/
%let mth=put(mdy(m,1,i),yymmn6.);
set ds&mth;
output;
end;
end;
run;

9
dream9876 发表于 2015-4-12 01:01:08
lpclimber 发表于 2015-4-10 11:12
楼主参考下这一段,希望你能用上
谢谢你的代码,下面这个是按照提供的思路修改的宏代码。
再次感谢~~~

%macro set;
data a;
%do i=0 %to 34;
%let mth=%sysfunc(putn(%sysfunc(intnx(month,"1jan2010"d,&i,s)),yymmn6.));
set ds&mth;
output;
%end;
run;
%mend set;
%set;

10
dream9876 发表于 2015-4-12 01:03:12
dream9876 发表于 2015-4-11 23:28
帮忙看看,这个错在哪里呀。。。。

data hebing;
不要理会了,低级错误,已经修正。。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-24 12:43