从SAS中的变量名中删除后缀
我有一个数据集,我试图简单地重命名其中的许多变量。变量名的结构如下:从SAS中的变量名中删除后缀,sas,Sas,我有一个数据集,我试图简单地重命名其中的许多变量。变量名的结构如下: '2018 10 20 ABC'n '2018 10 27 ABC'n '2018 11 03 ABC'n 等等。这是一个新变量,每周一次,我只想从所有变量名中删除ABC。但有很多,我希望解决方案是一般性的,所以我不必键入 rename '2018 10 20 ABC'n='2018 10 20'n 对于每个实例。没有根据复杂的名称转换直接重命名变量的语法。您必须生成源代码(codegen)来执行您识别的重命名语句 例如:
'2018 10 20 ABC'n
'2018 10 27 ABC'n
'2018 11 03 ABC'n
等等。这是一个新变量,每周一次,我只想从所有变量名中删除ABC。但有很多,我希望解决方案是一般性的,所以我不必键入
rename '2018 10 20 ABC'n='2018 10 20'n
对于每个实例。没有根据复杂的名称转换直接重命名变量的语法。您必须生成源代码(codegen)来执行您识别的
重命名
语句
例如:
使用Proc CONTENTS
获取变量的名称作为数据,并使用Proc SQL
计算rename
语句所需的oldname=newname对。使用Proc DATASETS
就地修改数据集元数据
options validvarname=any;
data have;
attrib
x y z p q r
'2018 10 20 ABC'n
'2018 10 27 ABC'n
'2018 11 03 ABC'n
length = 8
;
run;
proc contents noprint data=have out=have_metadata(keep=name);
run;
proc sql noprint;
select quote(name,"'") || 'n = ' || quote(tranwrd(name,'ABC',''),"'") || 'n'
into :renames separated by ' '
from have_metadata
where upcase(name) like '%ABC'
;
proc datasets nolist lib=work;
modify have;
rename &renames;
run;
quit;
应该记录
197 proc datasets nolist lib=work;
198 modify have;
199 rename &renames;
NOTE: Renaming variable '2018 10 20 ABC'n to '2018 10 20'n.
NOTE: Renaming variable '2018 10 27 ABC'n to '2018 10 27'n.
NOTE: Renaming variable '2018 11 03 ABC'n to '2018 11 03'n.
200 run;
NOTE: MODIFY was successful for WORK.HAVE.DATA.
没有根据复杂名称转换直接重命名变量的语法。您必须生成源代码(codegen)来执行您识别的
重命名
语句
例如:
使用Proc CONTENTS
获取变量的名称作为数据,并使用Proc SQL
计算rename
语句所需的oldname=newname对。使用Proc DATASETS
就地修改数据集元数据
options validvarname=any;
data have;
attrib
x y z p q r
'2018 10 20 ABC'n
'2018 10 27 ABC'n
'2018 11 03 ABC'n
length = 8
;
run;
proc contents noprint data=have out=have_metadata(keep=name);
run;
proc sql noprint;
select quote(name,"'") || 'n = ' || quote(tranwrd(name,'ABC',''),"'") || 'n'
into :renames separated by ' '
from have_metadata
where upcase(name) like '%ABC'
;
proc datasets nolist lib=work;
modify have;
rename &renames;
run;
quit;
应该记录
197 proc datasets nolist lib=work;
198 modify have;
199 rename &renames;
NOTE: Renaming variable '2018 10 20 ABC'n to '2018 10 20'n.
NOTE: Renaming variable '2018 10 27 ABC'n to '2018 10 27'n.
NOTE: Renaming variable '2018 11 03 ABC'n to '2018 11 03'n.
200 run;
NOTE: MODIFY was successful for WORK.HAVE.DATA.