2016-11-02 8 views
0

저는 SAS에 매우 익숙합니다. 나는 내 문제에 대한 해결책을 찾기 위해 시간을 보냈다. 불행히도, 나는 아무 것도 찾을 수 없었다. 도와 주셔서 감사합니다. 문제는 실제로 아주 간단합니다.길이가 다른 두 변수의 공통 값을 찾는 방법은 무엇입니까?

나는 길이가 다른 두 개의 다른 데이터 세트 (dat1과 dat2라고 부름)를 가지고 있습니다. 또한, 그들은 둘 다 내가 관심있는 변수 X를 가지고 있습니다. 나는이 두 열 (dat1_X 및 dat2_X라고 부르 자)의 공통 값을 찾는 방법을 찾고 있습니다. 데이터 세트는 매우 크지 만 약 1 천만 건의 관측이 있습니다.

+0

는 데이터와 당신이 지금까지 시도의 예를주십시오. – Jetzler

+0

프로 시저 비교를 참조하십시오. – 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; 
관련 문제