SAS中文论坛

标题: Data步循环宏变量的赋值 [打印本页]

作者: shiyiming    时间: 2010-2-21 18:07
标题: Data步循环宏变量的赋值
%do q = 1 %to &n;
PROC FSEDIT DATA=dedata.p&&dsn&q  mod
  SCREEN=GLSCN.descn.p&&dsn&q...SCREEN;
RUN;
%end;

我今天突然想用do loop来代替%do,后来发现宏变量赋值应该最简单有效。
但是后来又发现,这个东西在宏变量做文件名的时候根本不管事儿。
后来想起了%sysfunc,但是发现根本不支持put函数。。。
有什么简单有效的建议么?
谢谢!
作者: shiyiming    时间: 2010-2-21 21:37
标题: Re: Data步循环宏变量的赋值
一不小心,好像又问到了一个不太好办的问题。。。。我是没什么办法了。。。
作者: shiyiming    时间: 2010-2-22 01:20
标题: Re: Data步循环宏变量的赋值
I don't think I fully understand your needs but in order for %sysfunc() to work with put() data step function, you may try %sysfunc(put[color=#008000:2bnpq4u0]n[/color:2bnpq4u0](&lt;...&gt;,  &lt;...&gt;)) or %sysfunc(put[color=#BF0000:2bnpq4u0]c[/color:2bnpq4u0](&lt;...&gt;,  &lt;...&gt;)) depending on whether your operator is [color=#008000:2bnpq4u0]numeric[/color:2bnpq4u0] or [color=#BF0000:2bnpq4u0]character[/color:2bnpq4u0]. <!-- s:-) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":-)" title="Smile" /><!-- s:-) -->
作者: shiyiming    时间: 2010-2-22 11:19
标题: Re: Data步循环宏变量的赋值
Thank you so~ much!
I've tried....
but still don't work when creating the varable names....
作者: shiyiming    时间: 2010-2-22 13:51
标题: Re: Data步循环宏变量的赋值
我也没看懂你要用PUT做什么。最好简化你的问题描述!!!!!不过PUTN PUTC的确很可能是你需要的东西。
作者: shiyiming    时间: 2010-2-22 15:58
标题: Re: Data步循环宏变量的赋值
我想用data步do loop,把%do去掉就行。
但是又需要变量名能够方便定位。 <!-- s:lol: --><img src="{SMILIES_PATH}/icon_lol.gif" alt=":lol:" title="Laughing" /><!-- s:lol: -->
作者: shiyiming    时间: 2010-2-22 16:49
标题: Re: Data步循环宏变量的赋值
还是没懂,因为你现在的描述还是偏向于“你想怎么做”,而不是你要“做什么”。
比如你可以描述。你想生成多个PROC XXX的语句,其中XX参数要如何如何变化。
作者: shiyiming    时间: 2010-2-22 18:35
标题: Re: Data步循环宏变量的赋值
....

我要用data步do loop代替%do,在不影响变量名命名的前提下。
比如说
[code:1ipyse0j]%macro a;
data a;
%do i=1 %to 10;
  x&amp;i=&amp;i;
%end;
run;
%mend a;
%a;[/code:1ipyse0j]

我不想用%do,或者说,有什么方便的函数支持直接返回变量值作为宏变量复制方法的么?
作者: shiyiming    时间: 2010-2-23 02:20
标题: Re: Data步循环宏变量的赋值
maybe you can try CALL EXECUTE();
作者: shiyiming    时间: 2010-2-23 13:58
标题: Re: Data步循环宏变量的赋值
to oloolo
Thank you. <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->
作者: shiyiming    时间: 2010-2-23 17:12
标题: Re: Data步循环宏变量的赋值
还有就是,不用%do的话

array(n)=lag&amp;n.(x)
这个怎么解决
作者: shiyiming    时间: 2010-2-24 09:37
标题: Re: Data步循环宏变量的赋值
不知道LZ说的是这个意思么?
[code:3phq2eun]%let n=10;
data a;
  array x(&amp;n);
  do i=1 to &amp;n;
    x(i)=i;
  end;
run;
[/code:3phq2eun]

对于lag&amp;n.(x),以前想了好几个方法,都没搞定... <!-- s:( --><img src="{SMILIES_PATH}/icon_sad.gif" alt=":(" title="Sad" /><!-- s:( -->
作者: shiyiming    时间: 2010-2-24 11:04
标题: Re: Data步循环宏变量的赋值
LOGn(x)=ln(x)/ln(n)...........SAS STATEMENT  log(x)/log(n)
作者: shiyiming    时间: 2010-2-24 12:44
标题: Re: Data步循环宏变量的赋值
to ahuige
<!-- s:lol: --><img src="{SMILIES_PATH}/icon_lol.gif" alt=":lol:" title="Laughing" /><!-- s:lol: -->
作者: shiyiming    时间: 2010-3-2 16:12
标题: Re: Data步循环宏变量的赋值
to superkuhasu
array  +  mod(_n_, &amp;cycle)
作者: shiyiming    时间: 2010-3-3 12:36
标题: Re: Data步循环宏变量的赋值
to oloolo
Details for &amp;cycle? <!-- s:lol: --><img src="{SMILIES_PATH}/icon_lol.gif" alt=":lol:" title="Laughing" /><!-- s:lol: -->
作者: shiyiming    时间: 2010-3-9 14:53
标题: Re: Data步循环宏变量的赋值
to superkuhasu
自己动脑筋




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