본문 바로가기

SAS106

[SAS] sas에서 텍스트 파일 불러오기(infile문 이용, 에러 해결하기) 빅데이터(bigdata)를 다룰때 원시데이터가 엑셀(excel) 파일인 경우가 거의 없다. 이유는 엑셀 파일의 행(관측치)의 개수가 한계가 있기 때문이다. 엑셀 97-2003 통합문서인 경우 행은 총 65,536, 엑셀2007인 경우 행은 총 1,048,576 그렇기 때문에 텍스트 파일을 많이 가져오는 경우가 대부분이다. sas를 이용해서 텍스트 파일을 가져오는 방법을 알아보자. 일반적으로 간단하게 가져오는 경우가 [파일]-[데이터 가져오기] 를 통하여 또는 proc import를 이용하여 텍스트 파일을 가져오는데 정상적으로 가져와진다면 문제가 없다. 하지만 많은 경우가 불러오는 도중 다양한 에러들이 생기는 경우가 많다. 에러를 해결하는 몇몇의 경우에 대해서 알아보자. 1. [파일]-[데이터가져오기]를 .. 2014. 3. 5.
[SAS] sas merge 가로병합 끝장내기(full, left, right, inner join방법 소개) sas에서 데이터 핸들링을 하면서 데이터들을 붙이고 나누고 하는 작업들을 자주 하게 된다. 가장 많이 사용되는 것이 세로병합인 set 구문과 가로병합 merge인데 오늘은 merge 사용법에 대해서 알아보도록 하자. 사진을 보고 이해하면 아주 쉽게 이해 할 수 있을 것이다. 아래 사진에 m이라는 데이터셋과 m1이라는 데이터셋이 있는데 변수 key를 가지고 merge(가로병합)를 해보자. (아래사진참조) 1. 두 데이터를 조인시킬 변수를 proc sort를 통해 정렬한다. 예제에서는 key변수를 정렬한다.(아래사진참조) 2. full join merge 방법 (아래사진참조) 풀조인 말그대로 조건 없이 통째로 가로로 붙여버리는 거다. 3. left join merge 방법(아래사진참조) 한마디로 두개의 데이.. 2014. 3. 4.
[SAS] sas proc freq 간단한 빈도표 및 출력 방법 noprint sas에서 데이터들의 빈도를 보고 싶을 경우 proc freq를 많이 사용한다. 출력창으로 보지 않고 새로운 데이터를 생성하여 보고 싶은 경우가 있는데 간단한 구문인데도 불구하고 아무 생각없이 output out= 을 사용하여 출력이 되지 않는다고 질문하는 분들이 많다. 예제를 통해 간단하게 알아보자. 사진참고 위의 사진을 보면 kk라는 데이터 셋에 a라는 변수가 하나가 있고 데이터는 총 11개 이다. 이 kk데이터 a변수의 빈도를 구하는 방법이다. 출력창으로 출력하지 않고, 새로운 데이터셋에 결과를 기록하고 싶을 경우에 proc freq에서 noprint 옵션을 사용하여 출력창으로 출력되는 것을 방지하고, table 변수명 뒤에 슬러시 / 를 사용한 후 out=출력결과를 저장할 데이터 셋명을 입력하면 .. 2014. 3. 4.
[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에서 기하평균과 신뢰구간 간단하게 구하는 방법 sas를 이용해서 값들의 기하평균과 신뢰구간을 간단하게 구하는 방법을 알아보자. 참고로 이 옵션은 sas9.1은 되지 않으며 9.2버전 이상만 가능하다. SAS EG도 가능하다. 위의 사진의 코딩처럼 proc ttest에서 옵션부분에 dist=lognormal 이라는 옵션을 사용하면 출력창에 geomean(기하평균값)과 그에 따른 95% 신뢰구간을 출력해 준다. sas 9.1버전에서는 빅데이터의 기하평균을 구하기 위해 로그를 씌우고, proc means해서 다시 exp를 씌우고 하는 작업을 해야는데 (물론 간단한 데이터의 경우에는 geomean() 함수로 해결이 가능함) 9.2 버전 이상부터는 dist=lognormal 옵션이 사용가능하기 때문에 간단한 코딩으로 기하평균과 신뢰구간을 구할 수가 있다. w.. 2014. 2. 27.
[Statistics, 통계] 기하평균(geometric mean) 예를 들어 2, 5, 7, 8 처럼 양수값들이 n개가 있을 경우에 이 값들의 곱의 n제곱근을 기하평균(geometric mean)이라 한다. sas에서 기하평균을 구하는 방법 참조 www.sasbigdata.com/80 [기하평균의 공식] 실제로 공학용 계산기를 이용하여 2, 5, 7, 8에 대해서 기하평균을 구하여 보자. 값이 2, 5, 7, 8로 n의 갯수가 4이다. 기하평균값은 약 4.86이 나왔다. [기하평균과 산술평균의 관계] 위의 공식을 보면 기하평균(geometric mean)은 산술평균(arithmetic mean)보다 크지 않음을 알 수가 있다. 위의 값으로 실제로 구해봐도 2, 5, 7, 8의 기하평균은 약 4.86 산술평균은 5.5로 기하평균은 산술평균보다 크지 않다. [기하평균은 왜.. 2014. 2. 26.
[SAS] sas에서 기하평균(geometric mean) 구하는 방법 sas에서 빅데이터(bigdata)의 이상치 제거를 할 경우 사분위수 q1, q3와 함께 자주 사용되는 기하평균(geometric mean)을 구하는 방법에 대해서 알아보자. 기하평균의 공식과 상세설명 참조 www.sasbigdata.com/81 1. 데이터셋 a는 2, 5, 7, 8 네개의 양수로 구성되어 있다. 2. 먼저 log_k라는 변수에 k값에 로그(log)를 씌워 치환한다. (이때 계산되어지는 값은 밑이 10인 상용로그(log)값이 아닌 밑이 e인 자연로그 ln값이다. ln=log e) 3. 로그로 치환된 log_k값들의 평균을 구한다. proc means를 이용 4. 마지막으로 log_mean(로그로 치환된 값들의 평균)에 지수 exp(exponential의 약자 자연대수 e)를 취한다. 5.. 2014. 2. 26.
[BIGDATA] 보건복지 빅데이터(bigdata) 효율적 관리방안 빅데이터(bigdata)라는 단어가 떠오르면서 세계의 정부와 기업들이 무한한 경제적 가치를 지니고 있는 빅데이터를 다양한 분야에서 적극적으로 활용을 시도 하고 있다. 빅데이터를 많이 보유할 수 밖에 없는 보건 및 의료관련 분야도 자연스럽게 빅데이터에 초점을 두고 연구를 진행하고 있다. 한국보건사회연구원 센터장은 빅데이터를 이렇게 정의했다. 빅데이터의 분석은 기존의 데이터에 가치 있는 새로운 생명을 불어 넣는것 이 말을 해석하자면 빅데이터 시대에 새로운 데이터와 비정형데이터에 너무 초점들을 두고 있지만, 과거의 기존에 축적된 작은 사이즈의 데이터들을 연결해 그 데이터에서 새로운 가치를 찾아낸다면, 그것 또한 빅데이터라고 할 수 있다는 것이다. 실제로 재난 예방 및 구제역 예방등이 기존 과거의 데이터들을 연.. 2014. 2. 24.
[SAS] sas에서 numeric 숫자형 결측치(.)를 0으로 한번에 다 바꾸는 방법 데이터에서 정제된 데이터가 있으면 좋겠지만 정제되지 않은 데이터를 받는 경우가 대부분이다. 이럴 경우에 문제 중 하나가 결측치 처리 방법이다. sas에서는 숫자형 변수에 대해 결측치가 있을 경우 점(.)으로 표시되는데 이것을 모두 0으로 한번에 바꾸는 방법을 알아보자. [sas 코딩과 결과창] 위의 사진을 보면 결측치가 포함되어 있는 point라는 데이터셋이 있다. 아래 코딩을 보면 array(배열) 문과 do문 if문의 조합으로 간단하게 모든 변수(sas, bigdata, kim, jin, hwi)에 있는 결측치 . 들을 0으로 변환 시킬수가 있다. 결과창 참조 [sas 코딩] data point_0; set point; array ace[*] _numeric_; do i=1 to dim(ace); i.. 2014. 2. 24.
[SAS] sas retain문장을 이용해 원하는 변수부터 나열하는 방법 2014년 소치올림픽 김연아가 아쉽게 은메달을 땄다....말도 안돼... sas를 이용해 retain문장으로 원하는 변수별로 나열하는 방법을 알아보자. 사진을 보면 소치 2014데이터셋에 세개의 의미있는 변수가 있다. 각각 러 시 아 라는 데이터를 가지고 있으며, 이것을 아래와 같이 retain문장을 입력 한 뒤 원하는 변수 대로 입력(러, 시, 아 를 거꾸로 가져와봄)하면 결과와 같이 러시아가 거꾸로 변수별로 들고오니 아시러가 되었음을 알수 있다. www.sasbigdata.com 김진휘 2014. 2. 21.