본문 바로가기

SAS106

[SAS] sas에서 그룹별로 중복값들 제거하는 방법 nodupkey sas에서 그룹별로 값들이 중복이 있는 경우 간단하게 제거 하는 방법이다. 위의 사진을 보면서 이해를 하자. group이라는 그룹 변수를 기준으로 cost들 값들이 같은 값들로 중복이 있는 경우 제거하려고 한다. proc sort 구문을 이용해서 위의 결과창처럼 간단하게 그룹별로 nodupkey를 이용해 중복제거 할 수 있다. sasbigdata.com 김진휘 2014. 3. 28.
[SAS] sas sql과 macro(매크로) 조합해서 반복적인 데이터 결합(join)하기 sas에서 처리시간을 줄이기 위해 sql문을 이용하여 데이터 결합을 한다. sort(정렬) 과정이 필요없으므로 그런데 만약 이와 같은 방법으로 여러개의 데이터들을 계속 반복적으로 해야된다면 sql문에 macro(매크로)문을 조합하여 사용할 수가 있다. sql문으로 left join을 하는데 같은 방법으로 여러번 반복 작업을 해야 하기 때문에 sql과 macro와 같이 사용하는 방법을 알아보자. [코딩과정] jin1, jin2, jin3이라는 데이터셋이 있고,hwi1, hwi2, hwi3이라는 데이터셋이 있다. 이 두개의 데이터셋을 각각 left join하여 jinhwi1부터 jinhwi3까지 데이터셋을 sql과 macro를 이용해 생성한다. create table 뒤에 새로 생성할 데이터셋명을 지정하는데.. 2014. 3. 19.
[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 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 step proc delete 프로시저로 데이터셋 삭제하는 방법 sas에서 proc delete를 이용하여 데이터셋을 삭제하는 방법을 알아보자. 그냥 탐색기에서 delete키를 이용하여 삭제해도 되고, 따로 라이브러리를 지정한 곳에 가서 sas dataset을 삭제해도 된다. 그래도 뭐 모르는거보다 아는게 좋은 거니깐 어려운 것도 아니고 간지나게 데이터셋을 확장편집기에서 구문을 이용해 지우는 것이다.ㅋㅋ 위의 사진을 참조하면 쉽게 이해 할 수 있듯이 proc delete data=지우고 싶은 데이터 셋; run; 을 실행하면 원하는 데이터셋을 간단하게 삭제 할 수가 있다. 만약 데이터셋이 많고, 데이터셋명이 거의 다 비슷비슷해서 찾아서 지우기 어려울 경우 proc delete를 이용해 클릭해가며 찾지 않고 쉽게 지울때 간혹 사용이 된다. sasbigdata.com 김진휘 2014. 3. 17.
[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 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.
[BIGDATA] 국민건강보험공단(건보공단) 공공 빅데이터(bigdata) 활용한 공익 서비스 제공 3월이라 국민건강보험공단 채용도 있고, 건보공단이 자주 눈에 띈다. 통계직 채용은 항상 느끼는 거지만 필요하다고 난리면서 매우 적은 인원을 뽑는다. 이전 정부 3.0 공공빅데이터 컨퍼런스와 의료산업 빅데이터 포럼에 참석하였는데, 국민건강보험공단의 빅데이터 활용을 통한 공익 서비스에 대해서 한번 쉽게 알아보자. 정부 3.0과 통계의 역할에서 정부는 국가 이하 공공기관이 가지고 있는 빅데이터(bigdata)를 활용에 대해 중점을 두고 있다. 그러므로 공공기관은 각자 기관마다 보유하고 있는 빅데이터를 어떻게 활용할 것인지에 대해 정부 시책에 부응하고자 빠르게 움직이고 있다. 정부3.0과 통계의 역할 컨퍼런스 참조 http://sasbigdata.com/36 의료보건업계가 치료중심에서 예방건강관리 중심의 서비스.. 2014. 3. 6.
[SAS] sas infile에 대해서 알아보기(옵션 등) sas에서 외부 데이터를 가지고 올때 infile 문을 사용하는데 거의 공식처럼 따라다니는 옵션들도 많고, 그것들이 무엇을 의미하는지에 대해 자세히 모르고 사용하는 사람들이 많다. sas infile의 각종 옵션들과 세부사항에 대해서 알아보도록 하자. 아래의 사진은 예제로 코딩을 한 것이다. %let _EFIERR_ =0; 시스템 변수의 초기화 오류가 발생했을시 자동으로 스탑시키는 명령 delimiter='구분자' 또는 dlm='구분자' 원시데이터에서 변수 별로 구분을 하게 하는 것을 설정하는 곳이다. 일반적으로 가장 많이 사용하는 것이 탭(tab)또는 comma(,) 이다. tab문자가 구분자일 경우에는 expandtabs 콤마가 구분자일 경우 dlm=',' dlm은 delimiter의 약자로 둘다 같.. 2014. 3. 5.