본문 바로가기

proc sql5

[SAS] sas에서 조건에 맞는 값들에 대해서만 left join하는 방법 sas에서 조건을 제시하고 그에 맞는 값들에 대해서만 left join을 하는 방법을 알아보자. 여기서 말하는 조건은 데이터의 일부분이 일치하는 경우를 말한다. 예를 들어 알아보자. [코딩 및 설명] [data step구문 이용방법] proc sort data=jin.hwi1;by key; run; proc sort data=jin.hwi2;by key; run; data jin.join; merge jin.hwi1(in=a where=(key like '1%')) jin.hwi2(in=b); by key; if a; run; 데이터셋 코딩을 보면 먼저 두개의 데이터셋을 join할 값인 key별로 정렬(sort)을 실시한다. 그리고 merge를 이용해 가로병합을 실시하는데 where문이 추가된 것을 볼 .. 2014. 5. 29.
[SAS] sas proc sql left join(왼쪽 테이블 기준 결합) 방법 sas에서 proc sql문을 이용해서 데이터를 결합하는 방법들을 알아보자. sas proc sql left join(왼쪽 테이블 기준 결합) 방법 - 두개의 데이터셋에 조인키의 같은 값이 있는 경우 왼쪽 테이블을 기준으로 매치시켜 합치기 [sas proc sql left join 문장구조 설명] [sas proc sql left join 예제 설명] [쉽게 코딩을 알아보자] proc sql; create table 결과데이터셋 as select 임의의명.*(모든변수사용), 임의의명2.*(모든변수사용) from 합칠데이터1 as 임의의명 left join 합칠데이터2 as 임의의명2 on 임의의명.합칠데이터1의 조인키변수=임의의명2.합칠데이터2의 조인키변수; run; www.sasbigdata.com 김진휘 2014. 3. 14.
[SAS] sas proc sql과 proc sort 두 방법으로 merge할 경우 처리 속도 비교 sas를 이용하여 필요한 데이터를 구축하기 위해서 데이터 병합 작업을 많이 하게 된다. 쉽게 말해 sas로 데이터를 붙이고 짜르고 하는 작업이 빈번하게 발생한다는 말이다. 데이터 가로 병합(merge)을 흔하게 사용하는데 데이터가 작을 경우에는 어떤 병합 방법을 사용해도 처리시간이 거의 차이가 없지만, 데이터가 크면 클수록 시간이 오래 걸리기 때문에 처리시간을 단축시키는 방법을 찾게 된다. sas에서 full join merge를 한다는 기준으로 두가지 방법(proc sql문, proc sort문)을 보고 어떤 것이 처리시간이 빠른지를 알아보도록 하자. 당연히 같은 결과를 출력하는데 여러가지 방법이 있다면 빠르게 처리 할수 있는 방법을 아는 것이 실무에 많은 도움이 될 것이다. 위의 사진에서 두가지 방법.. 2014. 3. 12.
[SAS] sas proc sql 문장에 대해서 알아보자(문장구조, 조건식) sas proc sql 문장에 대해서 알아보자(문장구조, 조건식) proc sql에서 조건식에 대해서 자세히 알아보자. [문장구조] proc sql; create table 결과데이터 셋 명 as select 그룹변수명, sum (case when 조건식 ~~일때 then 조건식 ~~해라 else 아니면 조건식 해라 end) as 예명 from 입력 데이터셋 명 where 조건식 group by 그룹변수명 having 결과 데이터에 대한 조건식; quit; run; [예시] [코딩 설명] sp3라는 데이터셋을 생성하여 month변수를 생성한다. sum함수를 이용하여 sum이라는 변수를 만들어 값을 구하는데 조건은 month가 01일 경우 cost에 10을 더하고 아니면 그냥 cost값으로 계산한다. sp.. 2014. 2. 28.
[SAS] SAS를 이용해 데이터 중복제거하기 proc sql 사용 SAS데이터를 핸들링 하면서 가장 많이 하는 작업중 하나가 중복제거 작업입니다. 보통 가장 일반적으로 사용하는 것이 proc sort에서 nodupkey를 옵션으로 걸어서 사용을 많이합니다. 그렇다면 중복제거가 proc sort의 nodupkey만 있는 것이냐? 아니다! proc sql의 distinct문이 있다. 그런데 왜 두개가 따로 있는것인가? 뭐 따지고 보자면 중간의 정렬과정인 sorting작업이 sql에서는 해줄 필요가 없기때문에 sql문에 아마도 대용량 데이터에서는 더 빠른 처리 결과를 낼 것이다. 그럼 proc sql의 distinct를 이용하여 데이터의 중복제거를 하는 방법을 알아보자. 아래와 같이 중복이 있는 데이터 셋을 생성하였다. 위의 5개변수와 10개의 관측치를 가진 데이터를 이용하.. 2013. 11. 18.