全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3656 8
2012-03-22
请教各位朋友,如何编写这样的宏程序?
如有一数据集A,其中有n个变量,但事先并不知道有几个变量,现要求生成一个新变量,新变量的值为其中指定的几个变量的和,此程序如何编写?谢谢!
二维码

扫码加我 拉你入群

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

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

全部回复
2012-3-22 13:39:16
*首先查看头文件信息,将数据A中的变量放在数据集VariableDat中,其中NAME 这一列就是数据集A中的所有变量;
proc contents data=A noprint out=VariableDat;
run;
*将变量写成宏变量;
proc Sql noprint;
select Name,count(*) into : Var_Name descrite by ' ',Var_count from VariableDat;
quit;
%put &Var_Name. ;
%put &Var_count. ;

*求和;
data New;
set A;
Sum_Var=sum(of &Var_Name.);
run;


希望对你有帮助;
二维码

扫码加我 拉你入群

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

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

2012-3-22 13:56:43
关于楼上代码:
1、中文注释写得很好,好的编程习惯;
2、 descrite by应修改为separated by;
3、Var_count之前应加:。顺便说一下,在执行SQL语句时,会生成自动宏变量&sqlobs表示观测个数,直接使用即可。
4、楼上代码执行之前,首先需要保证数据集A中所有变量为数值变量,如果有字符存在,代码执行失败。
二维码

扫码加我 拉你入群

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

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

2012-3-22 16:00:45
很好,对于我这样的初级选手有帮助!!
二维码

扫码加我 拉你入群

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

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

2012-3-25 10:57:13
谢谢各位的赐教,出差几天未能查看!
还有些疑问,想请教:如果我写的宏程序格式如下,怎么编写呢?
%macro hc(datain,varname,varS);
...

%mend;
其中datain为数据集名称,varname为需要合并的变量名称,如:a1 a2 a3 a4 等等,但事先并不知道有多少个变量,现要求在数据集datain中生成新变量为a,其值为a1、a2、a3、...的和。
谢谢!
二维码

扫码加我 拉你入群

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

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

2012-3-25 11:02:10
谢谢各位的赐教,出差几天未能查看!
还有些疑问,想请教:如果我写的宏程序格式如下,怎么编写呢?
%macro hc(datain,varname,varS);
...

%mend;
其中datain为数据集名称,varname为需要合并的变量名称,如:a1 a2 a3 a4 等等,但事先并不知道有多少个变量,现要求在数据集datain中生成新变量为vars,其值为a1、a2、a3、...的和。
谢谢!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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