全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2377 2
2013-09-18
如果我想在data set 中做如下动作:
每一个步定义一个macro last,其值为month variable, 具体来说:

month = propcase(strip(scan(name,1,',')));
%let last = month;

由于每一步的month value都不一样,需要用call execute 函数。

按照说明写出的是call execute('%last('||month||')');


但是好像不行,应该如何写呢?



谢谢!


二维码

扫码加我 拉你入群

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

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

全部回复
2013-9-18 19:35:40
完全看不懂
二维码

扫码加我 拉你入群

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

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

2013-9-19 10:36:25
生成 macro variable 可以用 symput function。

data test;
    input month $ year;
datalines;
Jan 2001
Feb 2002
Mar 2003
Apr 2004
May 2005
Jun 2006
Jul 2007
Aug 2008
Sep 2009
Oct 2010
Nov 2012
Dec 2013
; run;

/* call symput() function */
data _null_;
   set test;
   call symput('last'||put(year,4.),  month);
   m = symget('last'||put(year,4.));
   put m=;
run;

/* call execute */
%macro Last_M (month, n);
  %global last_&n last;
  %let last = &month;
  %let last_&n = &month;
  %put AAA  &last;
  %put BBB     &&last_&n;
%mend Last_M;

data _null_;
   set test;
   call execute('%Last_M('||month||', '||_n_||')');  
   call execute(' %let last2='||month||'; %put CCC          &last2;  ');  
run;
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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