본문 바로가기

SAS105

[SAS] SAS ERROR : Utility file open failed ERROR : Utility file open failed NOTE : 오류가 발생하여 SAS 시스템은 현재 스텝의 실행을 중지합니다. WARNING : 데이터 셋 XXX 이(가) 불완전합니다. 이 스텝은 0개의 관측치와 x개의 변수가 있을 때 중단되었습니다. WARNING : 데이터셋 'XXX' 은(는) 현재 스텝의 종료(으)로 인하여 변경되지 않았습니다. SAS에서 빅데이터(BIGDATA)를 다루면서 가장 일반적으로 PROC SORT를 실행 할 시 볼 수 있는 에러가 ERROR : Utility file open failed 라는 문구이다. 프로그램 코딩에도 문제가 없으며, Sorting하려는 데이터도 문제가 없는데 에러가 떠서 혼란스러울 것이다. 유틸리티 파일을 여는데 실패했다고 하는데 무엇이 문제.. 2014. 1. 21.
[SAS] SAS수식 산술연산자 SAS에서도 덧셈, 뺄셈, 곱셈, 제곱, 나누기 등등 일반적인 연산이 가능하다. SAS 수식은 data단계에서 사용되며, SAS 시스템에서 정의된 연산자를 이용하여 SAS수식을 만들수가 있다. 연산의 우선순위는 수학연산 순위나 일반적인 컴퓨터 언어의 순위와 동일하다. 만약 결측치가 있는 값에 산술연산자를 사용할 시 결과는 결측치가 출력된다. 2014. 1. 20.
[SAS] SAS 로그창의 세가지 로그 유형(WARNING, ERROR, NOTE) SAS를 실행하면서 문제가 발생 했을 시에 어디가 잘못된 것인지 몰라서 헤매는 경우가 종종있다. 이런 사람들의 대부분은 로그창을 확인하지 않고, 로그창이 무엇을 표현하는지 모르는 경우가 많다. SAS를 실행하면 대표적으로 출력 창, 로그 창, 확장편집기 창 세가지로 창이 구분이 된다. 자세한 내용은 아래주소를 통해 참조하자. http://sasbigdata.com/8 로그 창에는 프로그램에 대한 경고라던지 오류 등에 대해 SAS를 실행할 때 일어나는 여러 가지 사항들을 출력하는 역할을 한다. 그러므로 코딩 후 프로그램을 실행하고 난 뒤 항상 출력창 확인 이전에 로그창을 먼저 확인하여 제대로 실행이 되었는지를 확인하는 습관이 매우 중요하다. 로그창에는 위의 사진처럼 WARNING, ERROR, NOTE 세.. 2013. 12. 12.
[SAS] SAS에서 숫자값이 십진수로 변경될 때 입력값 그대로 출력하기 SAS를 이용하다 보면 숫자값이 큰경우 자동으로 출력결과가 십진수로 변경되는 경우가 생긴다. 한자리수까지 정확한 수치를 보고 싶은데 십진수로 변환되어 곤란한 경우가 많다. 큰 숫자값이 십진수로 자동 변환될 경우 원래 입력값 그대로 출력하는 방법을 알아보자. 보통 위의 그림처럼 숫자값이 클 경우 오른쪽 결과처럼 십진수로 변경되어 출력됨을 자주 보게 된다. 이것을 입력한 값 그대로 출력시켜 보자. 가장 간단하게 proc print에서 format문을 사용한다. 그러면 결과가 위의 그림 오른쪽 부분처럼 입력했던 값 그대로 출력됨을 볼 수가 있다. 왜 17자리를 하였는가? 어디까지 가능한지 몇번 실험을 해보았는데 포맷문의 숫자 변환은 17자리 1경까지만 정확하게 나오며, 경단위를 넘어갈시 기준이 불분명하며 잘못.. 2013. 12. 11.
[SAS] SAS를 이용해 관측치 재배열(array) 기존의 데이터가 행을 기준으로 보면 1행, 2행 모두 크기 순도 아닌 임의의 데이터이다. 이런 데이터를 행 별로 크기가 큰 순서대로 다시 변수에 넣어 재배열 하고 싶다. sas를 이용해서 행별로 크기가 큰 순서대로 재배치 시켜보자. array와 call sortn을 통해 몇줄 안되는 코딩으로 간단하게 크기순으로 재배열 할 수가 있다. 행별로 관측치 값들을 크기순으로 변수에 재배치 하는 방법 추가수정) 위의 배열구문에서 array x{*} _all_; 구문은 없어도 되는 구문입니다.코딩중 실수로 들어갔네요. 배열의 괄호는 [], {}, () 이 세가지중 어떤 것을 사용하셔도 무방합니다. 관측치가 작은 값을 순으로 재배열하고 싶으신 경우에는 array y{*} a1-a7; 로 하시면 되고, 교과서적인 인과관.. 2013. 12. 11.
[SAS] sas를 이용해 두변수의 데이터 하나의 변수로 합치는 방법 각각 두개의 변수의 데이터들을 붙여서 하나의 변수 데이터로 만드는 방법입니다. 예를 들어 변수가 k1, k2, k3가 있습니다. k1의 데이터와 k2의 데이터를 붙여서 k라는 변수로 만들어 보겠습니다. 아래의 그림을 참조하시면 되겠습니다. jin이라는 데이터셋에는 k1,k2,k3 변수 세개가 있습니다. 그리고 아래의 사진과 같이 데이터들이 있는데 변수 k1과 변수 k2를 합쳐서 k라는 변수로 만들어 보겠습니다. retain은 변수들을 원하는 순서대로 나열해주는 명령어 입니다. keep은 원하는 변수만 나타내주는 명령어 입니다. compress는 공백을 제거해 주는 함수 입니다. k라는 변수를 생성하는데 k1과 k2 변수를 compress 시키고 ||라는 것이 두개의 데이터를 붙인다는 것입니다. || 이게.. 2013. 12. 3.
[SAS] SAS를 이용해 데이터셋의 변수마다 원하는 소수점자리 지정하기 SAS를 하다보면 EXCEL에 비해서 소수점자리 맞추는 것이 상대적으로 조금 까다로운 편이다. 변수들은 많은데 변수들 마다 각각 원하는 소수점 자리수를 지정할 수는 없을까? 가능하다. 변수마다 원하는 소수점 자리수를 지정하는 방법을 알아 보도록 하자. 주석을 참고하며 코딩을 보면 이해에 도움이 될 것이다.(초록색 글씨) a라는 데이터 셋이 있는데 숫자값들이 제각각이다. 이들을 변수별로 원하는 소수점 자리수를 지정하여 출력해 보는 작업이다. 위의 그림은 ace, k, j, h라는 4개의 변수가 있는데 변수 k와 j는 소수점 셋째자리까지 출력하겠다. 변수 h는 소수점 둘째자리까지 출력하겠다.라고 정의하고 실행후 출력한 화면이다. 만약 포멧에서 지정하지 않은 변수는 원래 값 그대로 출력이 된다. sasbigd.. 2013. 11. 26.
[SAS] SAS에서 EXCEL 파일, 데이터 가져오기 오류 해결 방법 SAS에서 파일 - 데이터 가져오기 - EXCEL 자료를 불러 올때 오류가 생기는 경우가 있다. 이 경우 대부분 원인을 찾지 못하고 텍스트로 변환시키던지 다른 방법을 통해 가져온다. 클릭을 통해 쉽게 가져오는 방법이 있는데 원인을 찾아 고칠 생각은 하지 않고 다른 방법으로 가져오는데 오늘 그 원인을 해결하는 방법을 스크린샷과 함께 아주 쉽게 파헤쳐 보자. SAS9.1버젼을 기준으로 작성하였으며, 쉽게 설명하기 위해 많은 사진 첨부로 인해 스크롤 압박이 있습니다. 1. 아래 그림처럼 이런 문제가 생길 것이다. 원인 해결을 통해 이 오류를 잡아보자. 2. SAS 설치파일인 setup아이콘을 더블클릭한다. 3. 설치 언어 선택창이 뜰 것이다. 우리는 한국인이니깐 한국어를 선택합니다. 각자 원하는 언어 선택후 .. 2013. 11. 25.
[SAS] SAS 국제 공인 자격증 취득에 대해서 SAS에도 역시나 자격증이란게 존재합니다. SAS 국제자격증의 종류에 대해서 사진으로 간단하게 알아봅시다. [ SAS 국제자격증의 종류 ] SAS 국제자격증 종류는 여러 종류가 있는데 일반적으로 가장 먼저 취득하는 자격증이 SAS Foundation의 SCBP - SAS Certified Base Programmer for SAS 9 그냥 편하게 sas base자격이라고 하는데 통계학 전공자나 데이터관련 전공자들은 많이 도전하는 자격이다. 나또한 SCBP는 대학시절 국제자격증의 로망으로 인해 취득하였다. 딱히 큰 메리트는 없는 듯 싶다... 그다음 연계해서 도전하는 것이 SCAP - SAS Certified Advanced Programmer for SAS 9 이것 또한 그냥 sas advanced라고 .. 2013. 11. 19.
[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.
[SAS] SAS를 이용해 두개의 데이터셋의 변수들이 일치하는 기준으로 merge해서 붙이기 SAS를 이용해 두개의 데이터셋의 변수들이 일치하는 기준으로 merge해서 붙이기 이게 무슨 말인가? 두개의 데이터셋이 있는데 변수들의 값이 일치하는 것끼리 붙여버리는 것입니다. 말로 설명하는데는 한계가 있으니 사진을 참고 하시기 바랍니다. ex1과 ex2라는 두개의 데이터 셋이 있습니다. 같은 변수도 있고 다른 변수들도 있는데~ key와 name이라는 변수들이 일치하는 기준으로 두개의 데이터셋을 하나로 합치는 것입니다. ex3을 보시면 제대로 붙었다는 것을 확인 할 수가 있습니다. sort와 merge는 자주 사용하는 것이니 잘 알아두시면 유용하게 쓰일거라 생각됩니다. 2013. 11. 15.
[SAS] SAS를 이용해 joinkey별로 code에 중복자료가 있을시 모두 출력하기 SAS를 이용해서 joinkey별로 code에 중복자료가 있을 경우 중복된 값 뿐만 아닌 중복값에 해당하는 joinkey데이터를 모두 불러오는 방법을 알아 보도록 하겠습니다. 위의 사진과 같이 데이터가 조인키별로 코드가 있는 데이터가 있습니다. 만약 조인키별 코드가 중복값이 있을 경우 그에 해당하는 조인키에 대한 관측치 모두를 출력해 보도록 하겠습니다. 위와 같이 sas 코딩 후 실행을 시키면 코드중복이 있는 조인키에 대한 모든 값들을 출력할 수가 있습니다. 조인키 3과 4는 코드가 중복된 것이 없기에 출력이 되지 않습니다. statsbigdata.com 김진휘 2013. 11. 15.