SAS中文论坛

标题: SAS宏在临床试验中应用-对1个变量的LOCF结转 [打印本页]

作者: shiyiming    时间: 2005-8-24 14:50
标题: SAS宏在临床试验中应用-对1个变量的LOCF结转
[code:d36a7]%macro locf(data=data,  /*原始数据集*/
                              out=out,  /*输出填补缺失值后的数据集*/
                              var=var  /*处理变量*/
                          );

data &out(drop=var1);
   set &data(keep=&var);
   var1=lag(&var);
   if &var=. then &var=var1 ;
run;
%mend;

data aa;
input id$ x1 x2;
datalines;
a1 11 12
a2 .  22
a3 31 .
a4 41 .
a5 .  52
;
run;

%locf(data=aa,out=out,var=x1);[/code:d36a7]
作者: shiyiming    时间: 2005-8-29 22:20
标题: 辛苦啦
我以前怎么没发现这个LAG阿,多谢阿!
作者: shiyiming    时间: 2005-8-30 08:10
标题: to xystat
那你以前是怎么做的?愿意把代码贴上,和大家共享讨论否?
作者: shiyiming    时间: 2005-9-14 15:22
标题: 还可以结合CALL SYMPUT()线程和SYMGET()函数使用
%macro locf (data,out,var);
data &out;
  set &data;
  call symput ("VAR",&var);
  if &var=. then &var=symget("VAR");
run;
%mend;
作者: shiyiming    时间: 2005-10-1 09:06
标题: thank you!
首先非常感谢collen提供的locf宏,但是我发现用于本例的x2时,只能得到一个值,还有缺失值的啊,怎么办呢?
作者: shiyiming    时间: 2005-10-9 14:58
标题: 修改完chenxin8316的宏试试
%macro locf (data,out,var);
data &out;
set &data;
if &var^=. then call symput ("VAR",&var);
if &var=. then &var=symget("VAR");
run;
%mend;




欢迎光临 SAS中文论坛 (http://mysas.net/forum/) Powered by Discuz! X3.2