[英]sas macro in proc sql
我有一个可能很简单的问题,但我不知道。
我有列name1 c1 c2 c3 c4 .... c8
我必须按名称对这些列进行求和并生成新数据。
这是我写的代码,但是没有用。
请你帮助我好吗?
PROC SQL;
CREATE TABLE WORK.data1 AS
SELECT t1.name1,
%let k=8
%macro test;
%do i=0 %to &k;
%sysfunc(SUM(C&i)) AS C&i;
%END;
%mend test;
%test;
FROM WORK.data t1
GROUP BY t1.name1,
QUIT;
data data;
input name1 $ c1 c2 c3;
datalines4;
a 1 2 3
a 1 2 3
b 1 2 3
b 1 2 3
;;;;
run;
%macro test(k=);
PROC SQL;
CREATE TABLE WORK.data1 AS
SELECT t1.name1
%do i=1 %to &k.;
, SUM(C&i.) AS C&i.
%END;
FROM WORK.data t1
GROUP BY t1.name1;
QUIT;
%mend test;
%test(k=3);
这似乎是一种复杂的实现结果的方法,PROC Summary可以使用冒号修饰符对以C开头的所有变量求和,从而更加轻松。下面的代码运行@Mike创建的数据集并产生相同的输出。
proc summary data=data nway;
class name1;
var c: ;
output out=want (drop=_:) sum=;
run;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.