SAS中文论坛

标题: 菜鸟macro小问题,SOS [打印本页]

作者: shiyiming    时间: 2010-11-6 19:30
标题: 菜鸟macro小问题,SOS
问题: *怎么写code:若某个变量下有四个水平(1、2、3、4),要变为两个水平,如if varni>=3 then  varn=2;

[code:mngke48h]
%let vareff=VAR1 VAR2......VARN;*结局变量;
%let  ??;
*怎么写code:若某个变量下有四个水平(1、2、3、4),要变为两个水平,如if varni>=3 then  varn=2;

proc freq data=Q ;
tables egroup*&vareff/nopercent nocol  fisher;
run;
[/code:mngke48h]
作者: shiyiming    时间: 2010-11-7 20:18
标题: Re: 菜鸟macro小问题,SOS
期待jinju,hopewell,期待再次现身,
作者: shiyiming    时间: 2010-11-8 22:39
标题: Re: 菜鸟macro小问题,SOS
具体的变量还是应该具体对待。我想,macro可能在此处意义也不是很大。比如说:
%let vareff = var1 var2;
proc format;
value vfmt 1, 2 ='1' 3, 4 ='2';
run;
proc freq data=Q ;
tables egroup*(&vareff)/nopercent nocol  fisher;
format &vareff vfmt.;
run;
作者: shiyiming    时间: 2010-11-10 21:59
标题: Re: 菜鸟macro小问题,SOS
这里有个具体例子,code如下:
[code:esguj5uj]
%let vareff= RC3M3   LC3M3   RC4M3   LC4M3;*每个变量下有四个水平(0,1,2,3),要变为两个水平(0,1),
如if var>1 then var=1,但是变量太多,编辑有易于出错, ;

data nt1111;
  set nt.nt1;
  if &vareff in (2, 3) then &vareff=1;  
run;
TITLE 'nt 95%CI';
proc freq data=nt1111;
tables egroup*(&vareff)/nopercent nocol fisher alpha=&alpha.;
run;
[/code:esguj5uj]
结果报错,还望大侠指点,
作者: shiyiming    时间: 2010-11-10 23:01
标题: Re: 菜鸟macro小问题,SOS
[code:3tzvvhp2]proc format;
value x 2, 3 =1;
run;
TITLE 'nt 95%CI';
proc freq data=nt.nt1111;
tables egroup*(&vareff)/nopercent nocol fisher alpha=&alpha.; format &vareff x.;
run;[/code:3tzvvhp2]
作者: shiyiming    时间: 2010-11-11 08:28
标题: Re: 菜鸟macro小问题,SOS
<!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D --> 呵呵,谢谢jingju了,硬是没有把前面的code认识,现在有点认识了,再次谢谢jingju!! <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->  <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->




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