SAS中文论坛
标题:
SAS中可以创建宏变量数组吗?
[打印本页]
作者:
shiyiming
时间:
2009-8-7 14:16
标题:
SAS中可以创建宏变量数组吗?
举例来说,我有200个观测值,想把他们赋值到200个宏变量,用call symput();
SAS中可以创建宏变量数组吗?或者有没有其他更好的方法来实现?
多谢!
作者:
shiyiming
时间:
2009-8-7 14:44
标题:
Re: SAS中可以创建宏变量数组吗?
能问问你想拿那200个宏变量干什么用吗?
作者:
shiyiming
时间:
2009-8-10 11:58
标题:
Re: SAS中可以创建宏变量数组吗?
本想写一个可以做rename的macro,数据集太大,变量太多,so....................................................
作者:
shiyiming
时间:
2009-8-10 13:03
标题:
Re: SAS中可以创建宏变量数组吗?
[code:2dsmuks4]data original;
input c d e a b;
datalines;
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
;
data name_list;
input old_name $ new_name $;
datalines;
a name_4
b name_5
c var_1
d var_2
e var_3
;
%macro rename_var(orig_ds,var_ds);
options nosymbolgen nomprint;
data &orig_ds;
set &orig_ds;
%let id=%sysfunc(open(&var_ds));
%let nobs=%sysfunc(attrn(&id,nobs));
%syscall set(id);
%do i=1 %to &nobs;
%let rc=%sysfunc(fetchobs(&id,&i));
rename &old_name=&new_name;
%end;
%let id=%sysfunc(close(&id));
run;
%mend;
%rename_var(original,name_list)[/code:2dsmuks4]
作者:
shiyiming
时间:
2009-8-10 13:09
标题:
Re: SAS中可以创建宏变量数组吗?
以前有个"批量重命名"的帖子...
将这200个东西赋值给dx1-dx200 再用循环引用 &&dx&i..
作者:
shiyiming
时间:
2009-8-12 13:17
标题:
Re: SAS中可以创建宏变量数组吗?
把macro改成下面的可以跑的。
%macro rename_var(orig_ds,var_ds);
options nosymbolgen nomprint;
data _null_;
set &var_ds;
call symputx('oldname'||strip(put(_n_,best.)),old_name);
call symputx('newname'||strip(put(_n_,best.)),new_name);
run;
data &orig_ds;
set &orig_ds;
%let id=%sysfunc(open(&var_ds));
%let nobs=%sysfunc(attrn(&id,nobs));
%syscall set(id);
%do i=1 %to &nobs;
%let rc=%sysfunc(fetchobs(&id,&i));
rename &&oldname&i=&&newname&i;
%end;
%let id=%sysfunc(close(&id));
run;
%mend;
作者:
shiyiming
时间:
2009-8-13 08:57
标题:
Re: SAS中可以创建宏变量数组吗?
谢谢楼上各位,受用了 :)
欢迎光临 SAS中文论坛 (https://mysas.net/forum/)
Powered by Discuz! X3.2