SAS中文论坛

标题: 数据集变量重新赋值 [打印本页]

作者: shiyiming    时间: 2007-1-11 08:57
标题: 数据集变量重新赋值
想通过下面的一次宏调用把tmp1里面id和相应的变量值改掉,但是做不到。如何实现?谢谢

data tmp1;
        input id var1 var2 var3;
        cards;
        1 1 1 1
        2 1 1 1
        3 1 1 1
        4 1 1 1
;
run;

data tmp2;
        input id var_nm $ value;
        cards;
        1 var1 2
        2 var2 2
        2 var1 2
        3 var3 2
;
run;
data _null_;
        set tmp2 end=final;
        call symput(("id"||compress(_n_)),id);
        call symput(("var_nm"||compress(_n_)),var_nm);
        call symput(("value"||compress(_n_)),value);
        if final then call symput("n",_n_);

run;
%macro a;
%do j=1 %to &n;
data tmp3;
        set tmp1;
        if id=&&id&j then do;
                put id;
                %put &&id&j &&var_nm&j &&value&j;
                &&var_nm&j = &&value&j;

        end;
run;
%end;
%mend;
%a;
作者: shiyiming    时间: 2007-1-23 10:03
标题: re
Modified based on your code:
[code:ebf47]%macro a;
data tmp3;
set tmp1;
%do j=1 %to &n;          /* moved line */
if id=&&id&j then do;
put id;
%put &&id&j &&var_nm&j &&value&j;
&&var_nm&j = &&value&j;
end;
%end;
run;                             /* moved line */
%mend;
[/code:ebf47]




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