直接上案例:
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...