Sas Merge語句中「in 」的應用

2021-06-08 16:51:43 字數 1309 閱讀 8319

直接上案例:

dataa ;

input  id age ;

datalines;

1 30

2 35

3 46

4 24 ;

run;

datab ;

input id ***$ ;

datalines;

2 f3 m

4 m5 f ;

run;

*合併前進行排序,養成好習慣;

proc sortdata=a ;

by id ;

proc sortdata=b ;

by id ;

run;

在沒有使用in=的情況下,sas在遇到要合併的資料集索引變數存在不相同時(即本次案例中合併的資料集a,b中的id不完全相同)預設全部納入,合併後的值為缺失。見圖一

datac;

merge a b;

by id;

run;

使用in=的情況:

程式**:

datac1 c2 c3; /*建立三個資料集*/

merge a(in=ages)  b(in=heights);/*  這裡的in=var語句中,var是指臨時變數,該變數標識 是否來自該資料集 ,如果是,則返回1 ,否則返回0;*/

by id;

if ages=1and heights=1then output c1;/* 將兩個資料集都包含的id所對應的觀測合併到資料集c1*/ ;

else if ages=0and heights=1then output c2;/* 將資料集a不包含但資料集b包含的id對應的觀測合併到資料集c2*/  ;

else if ages=1and  heights=0then output c3; /* 將資料集b不包含但資料集a包含的id對應的觀測合併到資料集c2*/  ;

run;

c1資料集

c2資料集

c3資料集

from:

Sql語句中IN和exists的區別及應用

首先,查詢中涉及到的兩個表,乙個user和乙個order表,具體表的內容如下 user表 order表 確定給定的值是否與子查詢或列表中的值相匹配。in在查詢的時候,首先查詢子查詢的表,然後將內錶和外表做乙個笛卡爾積,然後按照條件進行篩選。所以相對內錶比較小的時候,in的速度較快。具體sql語句如下...

Sql語句中IN和exists的區別及應用

sql語句中in和exists的區別及應用 首先,查詢中涉及到的兩個表,乙個user和乙個order表,具體表的內容如下 user表 order表 確定給定的值是否與子查詢或列表中的值相匹配。in在查詢的時候,首先查詢子查詢的表,然後將內錶和外表做乙個笛卡爾積,然後按照條件進行篩選。所以相對內錶比較...

sql語句中exists和in的區別和應用

表展示 首先,查詢中涉及到的兩個表,乙個user和乙個 order 表,具體表的內容如下 user表 order表 確定給定的值是否與子查詢或列表中的值相匹配。in在查詢的時候,首先查詢子查詢的表,然後將內錶和外表做乙個笛卡爾積,然後按照條件進行篩選。所以相對內錶比較小的時候,in的速度較快。具體s...