宏变量的值作为另一个变量的长度



我是SAS的新手,没有找到问题的答案。也许这个社区会/可以如此善良地帮助我。

是否可以将一个宏变量的值定义为另一个变量的长度?我确实知道宏的价值是字符,但是有没有办法呢?

我的

问题是:我想检查我的变量是否有最长值,并将最长值的长度设置为变量的新长度。因此,我使用了这个程序:

proc sql;
select max(length(variable))
into: length_variable
from dm_comp;
quit;
%put length_variable;

现在我在宏中有字符的值,但我不知道如何使用这个宏来设置新的长度。甚至有可能这样做吗?如果没有,您知道如何做得更好吗?非常感谢您的帮助。

您可以使用数据步骤重新定义变量并从旧数据集填充它。

/*Data with variable length 10, only need 2*/
data temp;
length x $ 10;
x="1";
output;
x="11";
output;
run;
proc sql noprint;
select max(length(x))
    into: length_variable
from temp;
quit;
/*Puts 2 as expected*/
%put &length_variable;
/*First define the variable and the new length,
  Then "set" the Data step - rename the old variable.
  Set the new variable to the old one (I strip whitespace here)*/
data temp(drop=x_old);
length x $ &length_variable;
set temp(rename=(x=x_old));
x = strip(x_old);
run;
/*CONTENTS Show us the new length*/
proc contents data=temp;
run;

结果

                  Alphabetic List of Variables and Attributes
                         #    Variable    Type    Len
                         1    x           Char      2

你走在正确的轨道上。您只需要正确格式化新变量:

proc sql;
    select max(length(variable))
    into: length_variable
    from dm_comp;
quit;
proc sql;
    create table dm_comp2 as select
        *, your_var as resized_var format %sysfunc(strip(&length_variable.)).
        from dm_comp;
quit;

相关内容

  • 没有找到相关文章

最新更新