Sas Merge语句中“in=”的应用

来源:互联网 发布:爬虫 php 教程 编辑:程序博客网 时间:2024/05/18 02:07

直接上案例:

data a ;

input  ID age ;

datalines;

1 30

2 35

3 46

4 24

;

run;

data b ;

input ID sex$ ;

datalines;

2 F

3 M

4 M

5 F

;

RUN;

*合并前进行排序,养成好习惯;

proc sort data=a ;

by id ;

proc sort data=b ;

by id ;

run;

在没有使用in=的情况下,sas在遇到要合并的数据集索引变量存在不相同时(即本次案例中合并的数据集a,b中的ID不完全相同)默认全部纳入,合并后的值为缺失。见图一

data c;

merge a b;

by id;

run;

 

 

 

 

使用in=的情况:

程序代码:

data C1 C2 C3; /*建立三个数据集*/

   merge a(in=ages)  b(in=heights);/*  这里的in=var语句中,var是指临时变量,该变量标识 是否来自该数据集 ,如果是,则返回1 ,否则返回0;*/

     by ID;

           if ages=1 and heights=1 then output C1;/* 将两个数据集都包含的ID所对应的观测合并到数据集C1*/ ;

           else if ages=0 and heights=1 then output C2;/* 将数据集A不包含但数据集B包含的ID对应的观测合并到数据集C2*/  ;

           else if ages=1 and  heights=0 then output C3; /* 将数据集B不包含但数据集A包含的ID对应的观测合并到数据集C2*/  ;

           RUN ;

 

C1数据集

 

C2数据集

 

C3数据集

 

 

From:http://www.beta-stat.com/?p=451

 

 

原创粉丝点击