SAS中文论坛

标题: 如何在数据集中的特定位置插入列 [打印本页]

作者: shiyiming    时间: 2010-10-22 14:14
标题: 如何在数据集中的特定位置插入列
比如数据集A(里面有100个字段),数据集B(里面有20个字段)

根据数据集A中的ID匹配数据集B中的ADDRESS,产生新的数据集C

要求数据集C有A的所有内容,和B的ADDRESS,但是B的ADRRESS必须放在A中取出的ID和ID_TYPE中间

例如
libnam X '文件路径'
proc sql;
create table c as
      select a.1,
               a.2 ,
               a.ID,
               b.ADDRESS,
               a.ID_TYPE,
               ....
               ....
               a.100
        from X.a a left join X.b b
        on a.ID=b.ID;
quit;
但是如果A的字段非常多,一个一个写的话太麻烦,有没有简单点的方法

如何写SAS CODE来实现这个功能呢?

求各位高手指教~
作者: shiyiming    时间: 2010-10-22 15:58
标题: Re: 如何在数据集中的特定位置插入列
先生成新的变量列,再merge
假设要在列ID后插入一列ADDRESS
[code:g8iu4nvo]
proc sql noprint;
select upcase(name) into :var_list separated by ' '
from dictionary.columns
where libname='WORK' and memname='A';
quit;

%let var1=ID;
%let var2=ADDRESS;
%let pos1=%index(&var_list,&var1);
%let pos2=%eval(&pos1+1+%length(&var1));
%let new_list=%sysfunc(catx(%str( ),%substr(&var_list,1,%eval(&pos1-1)),&var1,&var2,%substr(&var_list,&pos2)));

data c;
retain &new_list;
merge a b;
by id;
run;

[/code:g8iu4nvo]




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2