楼主: limuqi
2523 11

前n个 关测量相加 [推广有奖]

11
ntsean 发表于 2012-4-17 02:08:40
proc expand data=temp out=tempout;
  by group;
  convert x=movsum /transformout=(movsum 3);
run;

不过要注意的是,proc expand的moving sum是包括自己和前面2个,和你的定义略有不同,不过可以在 data step做小改动就可以了
如果不是分组的话,那么把by group去掉即可

12
2870898 发表于 2012-4-17 17:03:04
%macro togsum(casedate=);
   %let dsid=%sysfunc(open(&casedate));
   %let i=1;
   %let var_list=;
   %let nvars=%sysfunc(attrn(&dsid,nvars));
   %do &i=1 %to &nvars;
       %let var_list=&var_list  %sysfunc(varname(&dsid,&i));
   %end;
   %let sub_var=%scan(&var_list,1,' ');
   %let j=1;
   %let sum_=;
   data tosum;
   set &casedate;
   %do &j=1 %to &nvars;
       %let sum_=&sum_+&sub_var;
           %let i=%eval(&i+1);
           %let sub_var=%scan(&var_list,&i,' ');
   %end;
   run;
   %let rc=%sysfunc(close(&casedate));
%mend togsum;
给这个问题写的程序但是
错误是找到参数个数多余定义个数,自己不知道是怎么回事?  求解答

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

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