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

直接上案例:

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

 

 

  • 4
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值