我正在研究一个程序的一部分,该程序旨在标准化某些变量名称。我经常得到类似但不同的变量名称的列表。名字可以是first_name,fname,first等...
我有标准化的逻辑,但我需要有关如何实现它的指导。看起来它应该相当简单。如果variable1的名称是'first_name'或'fname'或'first',则将variable1重命名为First_name。
答案 0 :(得分:0)
我接近这种方式的方法是将其视为数据转换问题,可能使用格式。
首先,将变量名称放入数据集中。 PROC CONTENTS
OUT
dictionary.columns
可以执行此操作,或者您可以使用预先存在的sashelp.vcolumn
或data refmts;
input start $ label $;
start=upcase(start);
fmtname='$VarFmt';
datalines;
first_Name fname
firstName fname
f_name fname
last_name lname
lastName lname
l_name lname
;;;;
run;
proc format cntlin=refmts;
quit;
,如下所示。然后对它们(您创建的)应用一种修改名称的格式,修改的任何内容都将用于重命名语句。
首先,在SAS中手动或(更好地)在Excel /其他内容中创建数据集并导入数据集。
WORK.MYDATA
然后导入您的文件,我们假设您将其导入为data need_reformat;
set sashelp.vcolumn;
where memname='MYDATA' and libname='WORK';
if put(name,$VarFmt.) ne name then do;
rename = catx(' ','rename',name,'=',put(name,$varfmt.),';');
output;
end;
run;
proc sql;
select rename
into :renamelist separated by ' '
from need_reformat;
quit;
data want;
set work.mydata;
&renamelist.;
run;
。现在我们将看看是否有任何可重新格式化的名称。这是未经测试的,因此可能会在一两个地方语法关闭,但应该说明如何处理它。
{{1}}