RENAME 语句与RENAME选项学习
一、语法
/*RENAME 语句*/
RENAME old-name-1=new-name-1 <...old-name-n=new-name-n>;
/*RENAME 选项*/
RENAME=(old-variable-name-1=new-variable-name-1 <old-variable-name-2=new-variable-name-2 ...> )
使用RENAME语句和RENAME选项可以更改一个或多个变量、变量列表或变量与变量列表的组合的名称。
RENAME语句
- 只能作用于DATA步。
- 定义的新变量名仅作用于输出数据集(仅对在OUTPUT模式下打开的数据集有效,RENAME选项也是一样,啥意思?),在当前DATA步中的编程语句仍使用旧的变量名称。
RENAME选项
- 作用于DATA步和PROC步。
- 在创建数据集时使用RENAME选项,新变量名作用于输出数据集中。
- 在输入数据集时使用RENAME选项,则在DATA步的编程语句中需要使用新变量名
- 如果RENAME选项与WHERE(语句或选项)一起使用,则需要在WHERE表达式中使用新变量名
- 如果RENAME选项与DROP选项和KEEP选项在同一个DATA步中使用,DROP选项和KEEP选项在RENAME选项前,则必须使用旧变量名。不能在同一个语句中删除和重命名一个变量。
二、举例
例一:使用RENAME语句更改一个变量/变量列表/变量与变量列表的组合的名称。
rename street=address;
rename time1=temp1 time2=temp2 time3=temp3;
rename name=Firstname score1-score3=Newscore1-Newscore3;
例二:在DATA步中使用变量的旧名称。但是输出数据集中变量会被命名为新名称。
data market;set sales;rename Olddept=Newdept Oldaccount=Newaccount;if Oldaccount>5000; /*使用旧名称*/keep Olddept Oldaccount items volume;
run;
例三:在DATA步中使用变量的旧名称。但是由于KEEP选项作用于RENAME语句之后,所以在在DATA语句中的KEEP选项使用的是新名称。
data market(keep=newdept newaccnt items volume);/*使用新名称*/rename olddept=newdept oldaccnt=newaccnt;set sales;if oldaccnt>5000; /*使用旧名称*/
run;
例四:在DATA步中,同时对变量和变量列表进行变量名的修改
data temp;input (score1-score3) (2.,+1) name $;rename name=Firstname /*对变量名修改*/score1-score3=Newscore1-Newscore3; /*对变量列表名称修改*/datalines;
12 24 36 Lisa
22 44 66 Fran
;
例五: 使用RENAME选项修改输出数据集中的变量名。在DATA步中使用旧变量名。
data one;input x y z;datalines;
24 595 439
243 343 034
;
proc print data=one;
run;data two(rename=(x=keys)); /*修改输出数据集中的变量名*/set one;z=x+y; /*DATA步中使用旧变量名*/
run;
proc print data=two;
run;
例六: 使用RENAME选项修改输入数据集中的变量名。在DATA步中使用新变量名。
data three;set one(rename=(x=keys)); /*修改输入数据集中的变量名*/z=keys+y; /*DATA步中使用新变量名*/
run; proc print data=three;
run;
例七: 使用WHERE语句处理在PROC步中被RENAME选项修改的变量。
data test;input score1;datalines;
26
76
86
56
;proc print data=test (rename=(score1=score2)); /*在处理前修改变量名*/where score2 gt 75; /*使用新变量名*/
run;