본문 바로가기

SAS9.130

[SAS] sas에서 그룹별 데이터수 지정후 표본추출시 데이터수 이하인 경우 모두 추출하는 옵션 오늘 알아볼 옵션은 9글자만 추가 입력하면 엄청난 노가다 작업을 한번에 해결 할 수 있는 유용한 옵션이다. 데이터에서 sas를 이용해 표본을 추출하는 경우에 proc surveyselect 라는 명령문을 사용한다. 몇건을 뽑을지 지정 할수도 있고, 그룹별로 몇건씩 혹은 비율을 이용하여 추출하는 등 여러가지 방법으로 추출할 수가 있는데 이해도를 높이고자 간단한 예를 통해서 알아보도록 하자. 먼저 대용량이든 저용량이든 임의의 규모의 데이터가 있다. 그룹별로 10건씩 데이터를 추출 할 것인데, 실무데이터에서는 여러가지 경우의 수가 생기고, 실제 한 그룹에 모집단 데이터가 10건이 안되는 경우도 있을 수가 있다. 예를 들어 그룹별로 단순무작위추출방법(SRS)을 이용해 10건씩 추출할 경우 코딩예시 proc so.. 2015. 3. 17.
[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에서 그룹별로 각각 두 개 이상 변수에 특정값이 포함된 경우 추출하는 방법 sas에서 그룹별로 여러 변수에 특정값이 있는 경우의 그룹만 추출하는 방법을 알아보도록 하자. 역시나 언어로 이해하기는 어려우니 그림을 통해서 무엇을 할 것인가에 대해 알아보자. 위의 그림을 통한 설명처럼 간단하게 key(그룹)별로 여러변수에 특정값이 존재하는 경우만 출력한다는 것이다. [코딩과정] /*예제 데이터 생성*/ data h; input key$ code1$ code2$; cards; 111 a b 111 b b 111 b a 222 a b 222 a b 333 b b 333 b a 333 b b 444 a b 444 b a ; run; /*원데이터에서 code1에 a값이 있는 키값만 출력*/ data h1(drop=code1 code2); set h; if code1='a'; run; /*키.. 2014. 5. 14.
[SAS] sas에서 full join(합집합)에서 inner join(교집합)부분 빼는 방법(합집합-교집합) sas를 이용해 merge를 하는데 조건이 두개의 데이터셋 합집합 개념에서 교집합 부분을 빼는 방법을 알아보자. 아래의 그림을 보면 이해가 쉬울 것이다. 한마디로 hwi1 데이터셋과 hwi2 데이터셋의 초록색 부분을 추출해 내는 것이다. 1. DATA STEP 먼저 기본적인 데이터스텝에서 해보자. 두개의 데이터셋에서 기준이 되는 변수를 각각 proc sort를 이용해 정렬을 한다. 그뒤 아래의 그림에 코딩과정 처럼 진행하면 추출이 가능한데 if문에 있는 =^은 같지 않다라는 뜻이다. =^ 자리에 ne를 써도 같은 의미이다. ne는 not equal의 줄임말이다. 2. proc sql 위와 같은 결과값을 추출하지만 sort과정이 필요없기때문에 처리 속도가 빠른 sql문을 이용해 추출해보자. 아래 그림을 참.. 2014. 4. 25.
[SAS] sas에서 obs를 생성하는 방법. 누적 숫자값을 가진 변수 생성 방법 sas에서 관측치를 구별하는 유니크한 값을 만들거나 obs값을 가진 변수를 생성하고 싶을때 사용하는 방법이다. 사진을 이용해 간단하게 알아보자.[아래 사진 참조] 위의 사진을 보면 jin이라는 테스트 데이터는 id와 cost라는 두개의 변수로 구성된 데이터셋이다. 옆에 변수를 하나더 생성하는데 1씩 증가하는 누적값을 가진 변수를 하나 생성해 보는 것이다. [코딩설명] retain은 변수를 순서대로 나열할때도 자주 사용되지만 초기값을 지정할때도 사용이 된다. retain obs_num 0; obs_num이라는 새로운 변수를 생성하는데 초기값을 0으로 지정한다. obs_num+1; obs_num에 1을 더한다. 이렇게 실행하면 첫번째 관측치가 초기값 0으로 지정되고 그 밑의 명령어에 의해서 1값이 더해진다... 2014. 4. 15.
[SAS] sas translate, compress 함수 sas에서 관측값의 일부분을 수정 치환 시켜주는 함수인 translate와 관측값의 모든 공백부분과 특정 내용을 삭제해 주는 함수인 compress에 대해서 알아보자. sas의 translate는 값의 일부분을 변경해 주는데 만약 위의 예와 달리 var1이 FBC가 아닌 FFC라면 x=translate(var1,'A','F')를 사용하면 모든 F값을 A로 치환시켜버린다. 그러므로 ABC 맨앞자리만 변환되는 것이 아닌 FFC일 경우 AAC로 치환되는 것이다. compress같은 경우 보통 데이터를 ||로 결합하면 공백들이 생기는 경우가 있는데 이경우 compress를 같이 사용 자주 사용한다. 위의 예제 처럼 모든 공백도 제거가 가능하며 '' 안에 원하는 조건을 넣으면 그부분을 제거하면서 공백도 제거하는 .. 2014. 3. 17.
[SAS] sas 변수결합 ||, substr 함수 sas에서 2개 이상의 변수 값을 합칠 때 사용되는 함수 || 와 문자형 변수 값의 일부분을 추출하는 substr 함수에 대해서 알아보자. 위의 사진 참조 관측값들을 결합할 때 ||를 사용하여 값을 붙이는데 예를 들어 변수 var1에 abc가 있고 var2에 초콜렛 이 있다고 가정하자 x=var1||var2 를 적용하면 x값은 abc초콜렛 이라는 값을 가지게 되는 것이다. 주의해야 될 점은 두개의 값을 결합하는 과정에서 공백이 생길 수가 있다는 것이다. 그렇기 때문에 깔끔하게 공백없이 데이터를 결합하고 싶을때 문자형 변수의 공백을 제거해주는 compress함수를 같이 많이 사용한다. substr은 문자형 변수값의 일부분을 추출하는데 사용된다. 수치형 자료일 경우는 아무것도 추출되지 않으며, 문자형으로 변.. 2014. 3. 17.
[SAS] sas proc sql 변수들 합계구하기 sas proc sql 변수들 합계구하기 data ace; input a b c; cards; 1 2 3 2 2 2 100 900 500 ; run; proc sql; create table test as select sum(a, b, c) as abc_sum from ace; quit; run; 위의 코딩처럼 할 경우 결과데이터셋에 합한 결과 값 변수만 나타난다. 기존의 데이터셋에 있는 변수 모두와 결과 변수를 함께 나타나고 싶을 경우에는 아래와 같이 한다. data ace; input a b c; cards; 1 2 3 2 2 2 100 900 500 ; run; proc sql; create table test as select *, sum(a, b, c) as abc_sum from ace; qu.. 2014. 3. 14.
[SAS] sas proc sql 그룹별 합계구하기 /*sas proc sql로 그룹별 합계구하기*/ data a; input key cost; cards; 111 1 222 2 333 3 222 2 111 1 111 1 333 3 444 4 ; run; /*key변수를 그룹으로 cost의 합계를 구하는 sql문*/ proc sql; create table a1 as select key, sum(cost) as sum from a group by key; quit; run; www.sasbigdata.com 김진휘 2014. 3. 14.
[SAS] sas proc sql full join(합집합) 방법 sas에서 proc sql문을 이용해서 데이터를 결합하는 방법들을 알아보자. sas proc sql full join(합집합 결합) 방법 - 두개의 데이터셋에 조인키의 같은 값이 있는 경우 합집합으로 매치시켜 합치기 [sas proc sql full join 문장구조 설명] [sas proc sql full join 예제 설명] [쉽게 코딩을 알아보자] proc sql; create table 결과데이터셋 as select 임의의명.*(모든변수사용), 임의의명2.*(모든변수사용) from 합칠데이터1 as 임의의명 full join 합칠데이터2 as 임의의명2 on 임의의명.합칠데이터1의 조인키변수=임의의명2.합칠데이터2의 조인키변수; run; www.sasbigdata.com 김진휘 2014. 3. 14.
[SAS] sas proc sql right join(오른쪽 테이블 기준 결합) 방법 sas에서 proc sql문을 이용해서 데이터를 결합하는 방법들을 알아보자. sas proc sql right join(오른쪽 테이블 기준 결합) 방법 - 두개의 데이터셋에 조인키의 같은 값이 있는 경우 오른쪽 테이블을 기준으로 매치시켜 합치기 [sas proc sql right join 문장구조 설명] [sas proc sql right join 예제 설명] [쉽게 코딩을 알아보자] proc sql; create table 결과데이터셋 as select 임의의명.name1변수, 임의의명. score1변수, 임의의명2.*(모든변수사용) from 합칠데이터1 as 임의의명 right join 합칠데이터2 as 임의의명2 on 임의의명.합칠데이터1의 조인키변수=임의의명2.합칠데이터2의 조인키변수; run; .. 2014. 3. 14.
[SAS] sas proc sql inner join(교집합) 방법 sas에서 proc sql문을 이용해서 데이터를 결합하는 방법들을 알아보자. sas proc sql inner join(교집합) 방법 - 두개의 데이터셋에 조인키의 같은 값만 있는 경우 합치기 [sas proc sql 교집합 inner join 문장구조 설명] [sas proc sql 교집합 inner join 예제 설명] [쉽게 코딩을 알아보자] proc sql; create table 결과데이터셋 as select 임의의명.*(모든변수사용), 임의의명2.*(모든변수사용) from 합칠데이터1 as 임의의명, 합칠데이터2 as 임의의명2 where 임의의명.합칠데이터1의 조인키변수=임의의명2.합칠데이터2의 조인키변수; run; sasbigdata.com 김진휘 2014. 3. 14.