楼主: yukai08008
2212 1

[学习分享] 变量组后缀宏sas代码_Andy的原创帖10 [推广有奖]

  • 2关注
  • 17粉丝

已卖:19份资源

讲师

2%

还不是VIP/贵宾

-

威望
0
论坛币
2176 个
通用积分
3.0600
学术水平
10 点
热心指数
7 点
信用等级
7 点
经验
5915 点
帖子
120
精华
0
在线时间
556 小时
注册时间
2012-11-28
最后登录
2022-4-11

楼主
yukai08008 在职认证  发表于 2016-2-17 17:07:44 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

如果要对多个变量同时作分析(n个变量求和),使用proc means的时候会有var=  sum=选项,以下宏实现用同步功能:
给出var以及期望的后缀,为所有变量生成对应尾缀。
如 var= a b c d  sum=a_s b_s c_s d_s

调用宏: %vname(a b c,name)
&name 中会存放 a_s b_s c_s d_s
****************************************************************************

%macrovname(ins,ous,ped=s,address=E:\数据结果\tem.txt);

/*输出必须为宏变量,否则宏外无法调用*/

%global &ous;

/*获取变量组*/

dataa1;

long=symget('ins');

run;

/*输出文本*/

data_null_;

lengthlong $ 2000;

file "&address" lrecl=2000;

seta1;

putlong;

run;

/*读入文本,添加后缀*/

dataa2;

lengthshort $ 20;

infile"&address" lrecl=2000;

inputshort $ @@;

tem="&ped";

shorts=cats(short,'_',left(tem));

tlen=length(shorts);

run;

/*计算变量个数,长度,以及输出变量的长度*/

dataa3;

seta2 end=last;

vars+1;

lens+tlen;

iflast then do;

lr=vars*2+lens;

callsymput('vars',vars);

callsymput('lens',lens);

callsymput('lr',lr);

end;

run;

/*转置*/

proctranspose data=a3 out=a4;

varshorts;

run;

/*循环连接*/

dataa5;

lengthovar $ &lr;

seta4;

arraycol[&vars] $ col1-%sysfunc(cats(col,&vars));

doi=&vars to 1 by -1;

ovar=catx(' ',col,ovar);

end;

callsymput("&ous",ovar);

run;

procdelete data= a1 a2 a3 a4 a5;

run;

%mend;


二维码

扫码加我 拉你入群

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

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

关键词:sas代码 Andy Transpose address sysfunc shorts address file

沙发
yukai08008 在职认证  发表于 2016-2-17 17:09:05
可以用间接引用的方式,看起来会好一些
%let idk=sas as d ga a ga as da;
%vname(&idk,mim)
%put &mim;

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-6 09:11