在sas eg
中,出于兼容性问题,我需要复制一个表以重命名其列,以避免空格和破折号,并将名称改为大写。
这是我表中的一个名称示例,实际上我还有很多其他名称:
我想摆脱破折号和空格并使名称变为大写,这将是我输出的列:
编辑:
需要明确的是,我的输入是一个表,我的输出应该是新表,并且我不想键入或复制粘贴单个列名,我希望对所有列名执行操作(我可能必须使用这是我从外部来源收到的许多表的许多列上的数据)。
我应该使用什么sql查询(或sas宏)?
最佳答案
只需使用RENAME语句或RENAME =数据集选项即可。如果列表不太长,则可以轻松地将所需的old=new
对生成为宏变量。为了确保可以更改大小写,最好使用数据集选项,因为前面有一个问题表明SAS会根据首次显示名称的方式来设置RENAME upper = UPPER在DATA步骤中不执行任何操作。
proc contents data=have noprint out=contents ; run;
proc sql noprint;
select catx('=',nliteral(name),upcase(translate(trim(name),'__','- ')))
into :rename separated by ' '
from contents
;
quit;
data want ;
set have (rename=(&rename)) ;
run;
关于sql - 用下划线替换破折号和空格,并使列名大写,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46465350/