2016-11-02 81 views
0

我對SAS很新。我花了一些時間尋找我的問題的解決方案。不幸的是,我找不到任何。我非常感謝你的幫助。問題其實很簡單。如何找到兩個不同長度變量的共同值?

我有兩個不同的數據集(我們稱之爲dat1和dat2)長度不同。而且,它們都有一個變量X,我感興趣。我正在尋找一種方法來找到這兩列的共同值(我們稱它們爲dat1_X和dat2_X)。數據集雖然很大,但約有1000萬觀測值。

+0

請給您的數據,到目前爲止,你已經嘗試過的情況的例子。 – Jetzler

+0

研究proc比較。 – JJFord3

回答

0

有很多方法!

如果一個數據集很小,並且效率是一個問題,那麼可以考慮使用散列表(或格式)在通過較大表的同時執行查找。

否則,下面的SQL方法就可以了(可以嘗試測試,看看哪些是最有效的):

/* correlated subquery (generally slow) */ 
proc sql; 
create table want1 as 
    select distinct x 
    from dat1_x 
    where x in (select from dat2_x); 

/* inner join */ 
proc sql; 
create table want2 as 
    select distinct a.x 
    from dat1_x a, dat2_x b 
    where a.x=b.x; 

/* intersect */ 
proc sql; 
create table want3 as 
    select x 
    from dat1_x 
intersect 
    select x 
    from dat2_x;