본문 바로가기

sas if15

[SAS] sas에서 SELECT 문장에 대해서 간단하게 알아보자. SAS에서 SELECT라는 문장에 대해서 아주 간략하게 알아보도록 하자. 간단하게 생각하면 IF문이 다양하고 광범위하게 설정하여 사용할 수 있다면 SELECT문장은 선택적으로 지정해서 사용한다라고 생각할 수 있다. 실제 예제를 통해서 쉽게 알아보도록 하자. 위의 그림은 예제 데이터를 생성한 화면이다. k, j, h라는 변수 3개 총 9개 관측치를 가지고 있는 jin이라는 데이터셋이다. [코딩과정] data hwi; set jin; select (k); when (1) result=j*2; when (7) result=j+10; otherwise result=j-1; end; run; 코딩을 설명하면 select(k)로 k변수에 대해서 라고 지정을 해주는 것이다. 그리고 when(1)은 k변수의 값이 1일.. 2014. 6. 2.
[SAS] sas에서 코딩방법에 따른 처리 속도의 차이(if문의 위치) sas로 빅데이터를 핸들링하면서 항상 답답하고 문제되는것이 처리속도 시간이다. 큰데이터를 다룰수록 속도와의 전쟁인데, 각자 자기만의 스타일로 다양하게 프로그래밍하지만 코딩을 가장 최적화 시키면, 데이터가 크면 클수록 처리속도 시간의 차이는 엄청나다. 아래의 간단한 예를 보고 data step에서 if문 코딩을 최적화하는 방법을 알아보도록 하자. 위의 두개의 데이터셋 생성의 조건은 다음과 같다. test 데이터셋의 department변수에서 기획부값만 가져오고 각각 사칙연산의 결과를 나타내는 변수를 생성하라. 위의 결과 처럼 코딩의 순서는 다르지만 결과는 같다. 하지만 만약 이 데이터가 예제와 달리 방대한 양의 데이터라면 이 두가지의 코딩 처리속도는 분명히 차이가 난다. 왼쪽의 코딩은 if문이 먼저 나타나.. 2014. 5. 16.
[SAS] sas에서 데이터셋에 조건에 맞는 값들을 뽑아내 각각의 데이터셋으로 저장하는 방법 sas에서 데이터셋안의 조건에 맞는 값들을 각각 뽑아내서 따로따로 각각의 데이터셋으로 저장하는 방법을 알아보자. [사진참조] 위의 코딩을 보면 total에는 num과 cost 두개의 변수를 가진 총 4개의 관측치가 있다. 코딩 설명 data a b; 데이터셋 a와 b를 생성해라. set total; 데이터셋 total을 가져와라. if num='aaa' then output a; 만약 num값이 aaa이면 a데이터셋으로 보내라. else if num='bbb' or num='ccc' then output b; 만약 num값이 bbb이거나 ccc이면 b 데이터셋으로 보내라. run; 실행해. 위의 결과창을 보면 a와 b라는 데이터셋이 생기면서 각각 조건에 맞는 값들이 저장된 것을 확인 할 수가 있다. sa.. 2014. 4. 7.
[SAS] sas int(정수), round(반올림) 함수 sas에서 int와 round함수를 사용하여 값을 정수화 또는 반올림 시키는 방법을 알아보자. 소수점 값까지 가진 데이터 값을 정수자리까지 보기 위해 int라는 함수를 사용한다. int는 소수점을 버린다는 기준으로 절삭한다고 보면 된다. round함수는 소수점자리값을 5를 기준으로 반올림해주는 함수인데 위의 사진의 내용처럼 1,0.1,0.001 등으로 조건을 주어 소수점 몇번째 자리까지 볼 것인지를 정할 수 있다. 참고로 1, 0.1, 0.01로 조건을 줘야 올바른 값이 나온다. 만약 2, 0.2, 0.002같이 다른 값으로 조건을 주면 정확한 값이 나오지 않는다. www.sasbigdata.com 김진휘 2014. 3. 17.
[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 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 sql 문장을 이용해서 기술통계량을 구하는 방법을 알아보고, 문장구조에 대해서도 알아보자. [문장구조] proc sql; create table 결과 데이터셋명 as select 그룹변수명, sum(변수명) as sum, count(변수명) as n, avg(변수명) as mean, max(변수명) as max, min(변수명) as min, std(변수명) as std from 입력 데이터셋명 where 입력 데이터에 대한 조건식 group by 그룹변수명 having 결과 데이터 조건식; quit; run; [예제] [예제 및 코딩 설명] month, id, cost라는 변수 세개를 가진 sp1이라는 데이터셋이 있다. create table sp2 → sp2라는 결과 데이터 셋을 .. 2014. 2. 28.
[SAS] SAS PROC EXPORT를 이용하여 SAS파일을 텍스트파일로 내보내기 대부분 대용량 빅데이터를 다룰시에 엑셀로 내보내는 것보다 텍스트파일 형식으로 내보내는 것을 선호한다. SAS파일을 텍스트 파일 형식으로 내보내는 방법을 알아보자. 클릭클릭을 통해 간단하게 내보내는 방법이 있으나 여러개의 파일을 내보낼 경우에는 PROC EXPORT 구문을 이용하는 것이 훨씬 효율적이다. [코딩과정] PROC EXPORT DATA= work.ace OUTFILE= "C:\Documents and Settings\pc\바탕 화면\ace.txt" DBMS=TAB REPLACE; RUN; [설명] 임시라이브러리인 work방에 있는 ace라는 sas파일을 ace라는 텍스트 파일로 내보내는 경우이다. (work라이브러리는 임시 라이브러리이기 때문에 생략이 가능하나 설명을 위해 그냥 넣었다.) 전체적.. 2014. 2. 28.
[SAS] sas 숫자앞에 0을 붙여 자리수 맞춰주는 방법 코드화작업응용(if, length, compress, || 이용) sas에서 수치 또는 코드가 데이터로 있는 경우 서로 자리수가 맞지 않는 경우가 있다. 이럴 경우 앞에 0또는 00등을 붙여서 자리수를 맞춰주는 작업에 대해서 알아보자. 조인키등을 만들때 자주사용된다. 예제는 문자형데이터이지만 수치형 데이터라도 이런 형식으로 작업하면 가능하다. 참고로 수치형데이터는 우측정렬, 문자형데이터는 좌측정렬이 되니 현재 k변수와 k1변수는 문자형, 변수 m은 수치형이라는것을 사진만 봐도 알수가 있다. 이 작업에서 사용되는 것들은 if문과 length, compress, || 크게 이 네가지가 사용된다고 볼 수 있다. [코드과정] data a; input k $@@; cards; 1 12 230 3 222 99 ; run; data b; set a; m=length(k); if m.. 2014. 2. 21.