본문 바로가기

SAS105

[SAS] sas proc means 기초통계량 결과 데이터 작업 응용 방법 오늘은 SAS의 proc means 프로시저를 통해 나온 기술통계량 결과를 원하는대로 작업하여 본다. sas의 proc means는 정말 자주 사용되어 많은 사람들이 가장 기본적으로 유용하게 사용되는 기술통계량을 구해주는 프로시저이다. 옵션도 다양하고 그룹별로도 통계량을 낼수도 있고 통계량을 데이터셋으로 만들어 추가 핸들링을 통해 원하는 결과보고서 형태로 데이터를 만들어 응용해볼수도 있다. 오늘 알아볼 내용은 간단하게 소개하면 그룹별 통계량을 구해보는 것이며, 자세하게 들어가면 대분류 세분류 2단 구조의 그룹의 기술통계량을 출력하는데 조건은 세분류별 통계량 출력 아래 대분류 전체 통계량을 각각 끼워넣는 결과를 원한다는 것이다. 어차피 글로는 잘 이해가 되지 않으니 스크린샷과 함께 보며 이해해보자. 간략하.. 2018. 10. 19.
[SAS] SAS 숫자 날짜 변환 input, put, format 이용방법 이번 데이터 작업 내용은 input과 put 그리고 format을 활용하여 아주 유용하게 활용할 수 있는 방법이다.가지고 있는 데이터가 숫자형 변수이면서 8자리인 생년월일을 가지고 있는 경우 이 숫자에 원하는 일수를 더하면 몇년 몇월 몇일이 나오는지가 궁금할 때 활용될수 있는 방법이다. 보건의료쪽에서 활용해 본다면 요양개시일이나 최초입원일자를 알고 있는 상황에서 재원일수 또는 입원일수 몇일을 더했을때 과연 요양종료일이나 최종퇴원일자를 구하고 싶을때 활용될수 있다. 일반적으로는 데이터에 요양종료일이라던지 퇴원일을 가지고 있겠지만 임의로 원하는 일수를 더하고 싶은 경우가 생길때 사용될수 있는 것이다. 이외에도 금융이나 보험또는 기념일 등 날짜에 원하는 일수를 추가해서 몇일이 되는지 다양하게 응용해서 사용할수.. 2018. 10. 15.
[SAS] 2개의 변수 조합 빈도구하기(앞뒤 변수 변경을 동일건으로 판단할 경우, 경우의 수) 변수 조합의 빈도를 구하는 경우의 질문이 많다. 항상 말하지만 통계분석은 책이나 인터넷 등 강의를 듣고 틀에 짜여진 분석 코드에 변수만 넣어서 돌리고 해석하면 문제가 되지 않는다. 문제는 그 분석용 데이터 정제과정은 누가 가르쳐주지도 않고 그 때 상황에 맞게 본인이 창의적으로 해결해야 하는 부분인 것이다. 이와 같은 작업이 능숙하게 단축되면 전체적인 통계작업이 매우 많이 단축된다. 이번 내용은 칼럼이 2개가 있는 상황에서 이 두가지 칼럼을 붙여서 조합의 빈도를 구하고 싶은데 추가 조건이 칼럼을 붙였을때 앞뒤칼럼의 순서를 바꾸어서 일치하는 건이 있으면 그것은 동일건으로 본다는 것이다. 내용 자체는 매우 단순하다. 칼럼 두개의 조합을 보는데 앞뒤 변경시 동일한게 있으면 동일건으로 보고 빈도를 구한다는 것이다.. 2017. 3. 23.
[SAS] 기하평균 및 표준편차 적용시 round error 해결 방법 설명에 앞서서 예로 사용된 이상치제거 방법론에 관한 수식은 의미가 없으며, round error 방법을 해결하는 것을 쉽게 보여주기 위해 기하평균과 기하표준편차를 사용하지 않고, 간단하게 그냥 일반 표준편차를 사용하였을 뿐 방법론적으론 의미가 없음을 알린다. 아래 코드에 주석으로 달아놨지만핵심은 이것이다.1. 그룹내 값이 모두 동일할 경우 std는 0로 나오지만 그룹내 단건인 경우는 std가 결측치로 나타남 그러므로 결측치를 0로 변환해줘야함여러 그룹중에 한 그룹에 모두 동일한 값이 있는 경우도 있다. 이 경우에는 표준편차가 0로 나오지만, 만약 한 그룹이 한건으로 구성되어 있다면 이경우 표준편차는 . (결측치)로 표기된다.그래서 결측치를 나타내는 .(마침표)를 0값으로 변환시켜줘야 수식에 오류가 생기지.. 2017. 2. 9.
[SAS] sas9.4 results viewer 누적형식 수정방법 SAS 9.2에서는 프로시저 명령어를 실행시 results viewer 창에 실행했던 결과만 깔끔하게 나타났다. 하지만 9.4를 사용하는데 results viewer 창에 이전에 돌렸던 결과 아래에 결과들이 순차적으로 누적되는 형식으로 바뀌었다. 알아보니 9.3부터 이게 바뀐 것이다. 이 경우 나는 내가 확장편집기에서 실행한 것에 대한 결과만 보고싶을 경우 사용되는 명령어를 알아보도록 하자. 예를 들어보면 data test; input cost; cards; 100 200 4500 ; run; proc means data=test min max; var cost; run; proc means data=test std cv; var cost; run; 위와 같은 문장을 실행하면 실행 할때마다 기초통계량 값.. 2017. 2. 7.
[SAS] SAS의 PROC GLM 구문의 출력결과를 ODS OUTPUT으로 뽑아내는 방법 이전 TTEST를 예로 들어서 PROC TTEST의 결과를 데이터형식으로 뽑아내는 방법을 알아봤었다. 그때 사용한 구문이 ODS OUTPUT 문장이였는데, 과연 다른 분석결과도 같은 방법으로 사용하면 가능할까? PROC TTEST의 경우에는 아래와 같이 STATISTICS, TTESTS, EQUALITY를 사용하면 각각의 출력결과를 데이터 형식으로 뽑아내는 것이 가능하다. 그 데이터셋을 FORMAT문이나 다른 파일형식으로 출력하면 십진수로 나타나있는 결과값 또한 한자리수까지 정확하게 파악하는 것이 가능하다. [형식] ods output statistics=STATS; ods output ttests=T; ods output equality=EV; [참고] http://sasbigdata.com/160 그.. 2015. 3. 30.
[SAS] SAS 분석 출력 결과 ODS output방법 및 십진수로 표시된 숫자 푸는 방법 오늘 알아볼 내용은 그닥 중요한 것은 아니지만 실무자중에 호기심이 많은 여성분이 질문하여 나또한 호기심이 발동해 해본 것이며, 딱히 검색을 해도 잘 없길래 작성을 해본다. 일반적으로 우리가 어떤 분석을 하면 output이나 out을 이용해 데이터셋으로 출력을 하기도 하는데 유의확률값이나 출력창에 나타나는 출력값들은 따로 데이터셋으로 만들지는 않는다. 만약에 SAS에서 PROC TTEST를 이용해서 출력창에 나타나는 분석결과를 데이터형식으로 저장하고 싶다면? 두번째로 그 출력결과에 나타난 통계값들이 예를 들어 평균이나 표준편차가 너무 큰값이 나와서 지수(E)형태로 나왔을 때 1자리 숫자까지 정확하게 보고싶을 경우에는? 기초통계량 값 같은 경우에는 PROC MEANS를 이용해서 분석하면 1자리 수까지 정확하.. 2015. 3. 19.
[SAS] sas에서 그룹별 데이터수 지정후 표본추출시 데이터수 이하인 경우 모두 추출하는 옵션 오늘 알아볼 옵션은 9글자만 추가 입력하면 엄청난 노가다 작업을 한번에 해결 할 수 있는 유용한 옵션이다. 데이터에서 sas를 이용해 표본을 추출하는 경우에 proc surveyselect 라는 명령문을 사용한다. 몇건을 뽑을지 지정 할수도 있고, 그룹별로 몇건씩 혹은 비율을 이용하여 추출하는 등 여러가지 방법으로 추출할 수가 있는데 이해도를 높이고자 간단한 예를 통해서 알아보도록 하자. 먼저 대용량이든 저용량이든 임의의 규모의 데이터가 있다. 그룹별로 10건씩 데이터를 추출 할 것인데, 실무데이터에서는 여러가지 경우의 수가 생기고, 실제 한 그룹에 모집단 데이터가 10건이 안되는 경우도 있을 수가 있다. 예를 들어 그룹별로 단순무작위추출방법(SRS)을 이용해 10건씩 추출할 경우 코딩예시 proc so.. 2015. 3. 17.
[SAS] sas에서 빈도그래프 그리는 방법(proc freq, proc chart사용) 나는 sas를 이용해서 자료 정제를 포함한 핸들링 및 분석 결과도 추출하고, 통계적 해석도 하지만.. 시각화하기 위해 sas로 그래프 작업하는 것은 잘 하지 않는다. 왜냐면 오피스(엑셀이나 파워포인트)에 비해 안 예쁘다. 하지만 굳이 sas로 차트를 그려 달라는 경우가 있다. B형 여자 KJH 대리 ㅋㅋㅋㅋ 엑셀로 그리는게 보기 좋다고 추천하며 주절주절 했지만, 이미 귀를 닫고 있음..ㅋㅋ 적고 보니 나랑 이니셜이 같네?ㅋㅋ 오늘은 SAS를 이용해 빈도그래프 그리는 방법을 알아보도록 하자. 프로그램 코딩은 아래와 같다. data ex; input a$@@; cards; 1 2 2 2 1 1 1 1 3 3 3 3 4 4 5 5 5 5 5 5 5 ; run; proc freq data=ex noprint; .. 2014. 9. 25.
[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에서 left join시 join값(유니크값)이 두개이상 일치하는 경우 병합하는 방법 sas에서 left join시 join값(유니크값)이 두개이상 일치하는 경우 병합하는 방법에 대해서 알아보자. 간단히 설명하자면 데이터를 가로병합하는데 왼쪽 테이블 기준으로 하되 키값이 기존에는 하나였지만 키값이 2개가 일치하는 경우만 병합시키는 것이다. 그림을 통해 어떤 문제를 해결할 것인지 알아본다. test1 데이터셋과 test2 데이터셋을 test1데이터셋 기준(left join)으로 가로 병합을 하는데 k변수와 j변수가 둘다 일치하는 경우에만 가로병합을 실시하는 것이다. 그럼 결과는 맨 오른쪽 그림과 같이 check가 붙으면서 병합이 되어야한다. [코딩과정] [예제 데이터생성] data test1; input k$ j$; cards; A T A A C B H S ; run; data test2;.. 2014. 5. 30.
[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.