全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
6669 4
2014-02-18
悬赏 50 个论坛币 已解决
不好意思 刚发现能够悬赏,麻烦楼主把我之前那张没悬赏的重复贴删掉吧,谢谢!


现在我的情况是:有一个不同类型的药对应的编码表(表1),还有另一个用药的编码表(表2),需要通过表1中的编码信息来对应找出表2中的编码是属于哪种类型的药。

拿两个小数据来进一步说明一下:

表1的数据结构类似于:

data s_list;
input type $ code1-code4;
cards;

a 1001 2003 3772 3638
b 1223 2334 .       .
c 2221 2331 3442 .
;

run;



表2的数据结构类似于:


data drug;

input provid code;

cards;

100 1001

101 2003

110 2221

111 1111

;

run;


希望最终output的结果是这样的:


provid code type_a type_b type_c

100    1001     1        0         0

101    2003     1        0         0

110    2221     0        0         1

111    1111     0        0         0


请高手们帮忙!!!万分感谢!!!





最佳答案

yueCynthia 查看完整内容

1.先把list转置一下 proc transpose data=s_list out=list(drop=_NAME_); by type; run; ...
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-2-18 08:06:46
1.先把list转置一下
proc transpose data=s_list out=list(drop=_NAME_);                                                                                       
        by type;                                                                                                                        
run;                                                                                                                                    
1.jpg
2.俩表连一块儿 (其实还是用natural left join 比较好)                                                                                                                                       
proc sql;                                                                                                                              
create table mergedata as                                                                                                               
select provid, code, type                                                                                                               
from drug left join list                                                                                                               
on list.col1=drug.code;                                                                                                                 
quit;                                                                                                                                   
run;                                                                                                                                    
2.jpg
3.新建三列判断type                                                                                                                                       
data final;                                                                                                                             
set mergedata;                                                                                                                          
if type='a' then do;                                                                                                                    
type_a=1;                                                                                                                              
type_b=0;                                                                                                                              
type_c=0;                                                                                                                              
end;                                                                                                                                    
else if type='b' then do;                                                                                                               
type_a=0;                                                                                                                              
type_b=1;                                                                                                                              
type_c=0;                                                                                                                              
end;                                                                                                                                    
else if type='c' then do;                                                                                                               
type_a=0;                                                                                                                              
type_b=0;                                                                                                                              
type_c=1;                                                                                                                              
end;                                                                                                                                    
else do;                                                                                                                                
type_a=0;                                                                                                                              
type_b=0;                                                                                                                              
type_c=0;                                                                                                                              
end;                                                                                                                                    
run;   
3.jpg          
不知道是不是你想要的哈                                                                                                                        
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-2-18 08:16:58
建议先用proc sql合并数据库,在用proc transpose达到你要的结果
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-2-18 08:29:36
proc sql;
create table test as
select a.*,b.*
from 表一 as a inner join 表二 as b
on a.code=b.code
;
quit;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-2-25 20:43:24
/*生成新code变量来自这4列code1,code2,code3,code4所有信息*、

data s_list2;
   set s_list;
   code=code1;
   output;
   code=code2;
   output;
   code=code3;
   output;
   code=code4;
run;

/* 与你的drug 数据合并*/
proc sort data=s_list2 nodupkey;
by code;
run;
proc sort data=drug;
  by code;
run;

/*生成3个哑变量dummy variable即可*/
data drug2;
   merge drug s_list2;
   by code;
   if type='a' then do;
   type_a=1;
   type_b=0;
   type_c=0;
   end;
   
  else if type='b' then do;
   type_a=0;
   type_b=1;
   type_c=0;
   end;

   else if type='c' then do;
   type_a=0;
   type_b=0;
   type_c=1;
   end;
run;

  
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群