r**e 发帖数: 163 | 1 一份数据有大约100多个变量名(比如a, b, c, d, ....),想把所有的变量名后面都加个v?该
怎么做? |
p********a 发帖数: 5352 | 2 把名字从DICTIONARY里拿出来做MACRO变量VNAME1-VNAME100
再RENAME &&VNAME&I |
s******r 发帖数: 1524 | 3 proc sql;
select distinct compress(name||'='||name||'_v') into :M_Var_list separate by
' ' from
dictionary.columns
where libname='WORK' and memname='TEST';
%put &M_Var_list;
proc datasets lib=work;modify test;rename &M_Var_list;run;quit;
If your variable name is too long, probably you should need use %do to
rename varaible one by one.
加个v?该
【在 r**e 的大作中提到】 : 一份数据有大约100多个变量名(比如a, b, c, d, ....),想把所有的变量名后面都加个v?该 : 怎么做?
|
r**e 发帖数: 163 | 4 楼上的可否帮我编一下?从UCLA的网页上找到例子,但是有些不懂, 我照着试验
了下网页上提供的CODE,总是出错,得不出结果。多谢多谢。
注:这个不是我的作业,是老师给的活里碰到的一个问题,老师允许并鼓励我四处问人
的。
data faminc;
input famid faminc1-faminc12;
cards;
1 3281 3413 3114 2500 2700 3500 3114 -999 3514 1282 2434 2818
2 4042 3084 3108 3150 -999 3100 1531 2914 3819 4124 4274 4471
3 6015 6123 6113 -999 6100 6200 6186 6132 -999 4231 6039 6215
;
run;
%macro rename3(oldprefix, newprefix, num);
%let k=1;
%do %while(&k <= &num);
rename &oldprefix.&k = &newprefix.&k;
%let k = |
r**e 发帖数: 163 | 5 多谢多谢,这就去试验下。
by
【在 s******r 的大作中提到】 : proc sql; : select distinct compress(name||'='||name||'_v') into :M_Var_list separate by : ' ' from : dictionary.columns : where libname='WORK' and memname='TEST'; : %put &M_Var_list; : proc datasets lib=work;modify test;rename &M_Var_list;run;quit; : If your variable name is too long, probably you should need use %do to : rename varaible one by one. :
|
p********a 发帖数: 5352 | 6 赞啊,这个更简洁
by
【在 s******r 的大作中提到】 : proc sql; : select distinct compress(name||'='||name||'_v') into :M_Var_list separate by : ' ' from : dictionary.columns : where libname='WORK' and memname='TEST'; : %put &M_Var_list; : proc datasets lib=work;modify test;rename &M_Var_list;run;quit; : If your variable name is too long, probably you should need use %do to : rename varaible one by one. :
|
s******r 发帖数: 1524 | 7 sorry. There is a typo. I put SEPARATED as separate.
proc sql;
select distinct compress(name||'='||name||'_v') into :M_Var_list SEPARATED
by ' ' from
dictionary.columns
where libname=upcase('WORK') and memname=upcase('faminc');run;quit;
proc datasets lib=work;modify test;rename &M_Var_list;run;quit;
【在 r**e 的大作中提到】 : 多谢多谢,这就去试验下。 : : by
|