본문 바로가기

Data_Analysis/SAS14

[SAS] 코드를 줄여주는 기능 정리 들어가는 말 자주 사용하는 기본적인 기능을 정리한 글에 이어, 이번 글에서는 보다 심화된 내용으로 준비했습니다. 알고 있으면 편리하고 효율적으로 코드를 작성할 수 있는 기능 위주로 소개하고자 합니다. [DATA STEP] 1. IF - OUTPUT - IF ~ OUTPUT 은 DATA STEP에서 조건에 맞는 새로운 데이터 셋을 생성할 때 사용합니다. - 데이터를 다룰 때 전체 데이터 셋에서 IF 또는 WHERE구문으로 특정 조건에 맞는 데이터만 추출하여 테이블을 생성하곤 합니다. 만약 조건이 다른 2개의 데이터 셋을 만든다면 각 조건을 반영한 DATA STEP을 2번 반복하여 만들 수도 있지만 IF ~ OUTPUT 으로 1개의 DATA STEP에서 2개의 새로운 데이터 셋을 만드는 것이 효율적입니다. .. 2021. 9. 9.
[SAS] 자주 쓰는 기능 정리 들어가는 말 CSS 컨설팅 프로젝트로 SAS를 처음 접하는 팀원 분들이 많으실 듯합니다. 개인적으로는 SAS라는 프로그램이 최근 널리 사용되는 오픈소스 Python이나 R에 비해 생소할뿐더러, 인터넷에 관련 정보도 적어 공부하기 쉽지 않았습니다. 그리고 프로젝트 투입 전에는 프로젝트에 필요한 SAS 공부의 범위와 깊이를 가늠하지 못해 막막하기도 했습니다. 이후, 프로젝트를 하면서 '자주 쓰는 기능을 미리 알고 집중적으로 공부했더라면' 하는 아쉬움이 들었고, 이러한 부분을 정리하여 공유한다면 첫 프로젝트를 앞둔 컨설팅 팀원분들께 도움이 되지 않을까 하는 생각으로 글을 쓰게 되었습니다. 이번 글에서는 프로젝트에서 자주 쓰는 기능에 대한 간략한 설명과 함께, 프로젝트에서 언제, 어떻게 주로 사용하는지 덧붙였습.. 2021. 9. 8.
[SAS] RETAIN 이번 포스팅에서는 RETAIN 기능을 활용하여 데이터를 다룬 사례를 정리합니다. [문제] 데이터에는 ID별로 SIGN 등급(A > B > C > D 순서대로 점수가 높음 > 낮음)이 데일리로 적재되어 있습니다. 이 데이터에서 기준일자를 기준으로 특정한 기간 내에 고객 별로 가장 나쁜 점수, D를 연속적으로 받은 최대 일수를 구하는 문제입니다. 아래 이미지와 같이 기준일자 15일 내 D가 연속적으로 등장하는 최대 일수는 2일이고, 기준일자 30일 내 최대 일수는 8일입니다. [해결 방법] 다음과 같이 문제를 해결했습니다. 1. 데이터를 날짜순으로 정렬 2. SIGNAL 컬럼을 한 행씩 내려오면서 D가 연속되는 횟수를 MAX_15D 열에 누적 3. MAX_15D, MAX_30D 열의 최댓값 계산 1. 날짜 .. 2021. 4. 19.
[SAS] 반복문 활용 업무 중 2억 행이 넘는 자료를 처리할 때가 있습니다. 파일이 상당히 크다 보니 가장 오래된 날짜, 가장 최근 날짜를 확인하는 간단한 작업도 한 번에 처리할 수 없다고 뜨기도 합니다. 그래서 파일을 행별로 분할하여 동일한 작업을 처리하도록 했습니다. 이 과정에서 제가 사용했던 방법을 소개하고자 합니다. 더 좋은 방법이 있다면 댓글로 추천 부탁드립니다. 아래 예제 코드는 데이터에서 날짜의 최대/최솟값 탐색을 목적으로 작성했습니다. 1. 데이터 셋 한번에 사용 1) 데이터 셋을 한번에 불러들여 2) 테이블의 인덱스로 최소/최대 날짜 확인하는 방법입니다. 스크롤을 내려가며 결과를 직접 확인해야 한다는 점에서 세련되지 못하다고 생각할 수 있지만, 처리되는 속도가 빠르고 코드가 가장 짧고 단순합니다. 단지 데이터.. 2021. 2. 27.
[SAS] PROC FREQ 1. PROC FREQ 기본 구조 proc freq 명령어는 데이터 테이블의 빈도를 조회하는 명령어입니다. 기본 구조는 아래와 같습니다. 우선, TABLES에 변수를 늘려가며 테이블의 형태를 살펴본 다음, OPTION 항목을 다루도록 하겠습니다. PROC FREQ DATA=dataset ; TABLES variable(s) / ; RUN; 1) TABLES 변수1 TABLES 다음에 변수를 입력하면 변수의 빈도, 백분율, 누적 빈도, 누적 백분율을 조회할 수 있습니다. // 변수 1개 PROC FREQ DATA=SASHELP.HEART; TABLES Smoking_Status; //TABLES 변수명 RUN; 2) TABLES 변수1 변수2 변수에 대한 테이블이 각각 출력됩니다. 기본적으로 1개 변수 테.. 2021. 2. 9.
[SAS] PROC TABULATE 1. TABULATE 프로시저의 기본 형식 TABULATE 프로시저는 테이블을 작성할 때 사용하며, FREQ 프로시저보다 다양한 형식의 통계 테이블을 작성할 수 있습니다. [기본 형식] PROC TABULATE 형식; TABLE 행변수명, 열변수명; CLASS 변수명; VAR 변수명; [FORMAT 변수명 형식이름]; RUN; **TABULATE 프로시저 명령들 1) Class 2) Var 3) Table 4) Format Table 명령에서 작성하고자 하는 표의 행, 열 변수를 지정하며 기본적인 규칙은 아래와 같습니다. - Table 명령에서 적어도 1개 이상의 변수를 지정 - Table 명령에 사용되는 차원변수는 Class / Var에서 지정. (범주형인 경우 Class명령에서, 통계값이 산출되는 분.. 2021. 1. 28.
[SAS] 범주형 자료분석 성별, 직업, 선호도 같이 수치적으로 연속성을 가지고 있지 않은 범주형 자료의 경우 연속형 자료와 다른 분석 방법이 필요합니다. 이번 포스팅에서는 범주형 자료를 아래와 같은 방법으로 자료를 분석하고자 합니다. 1. 도수분포표 및 분할표 2. 적합도 검정 3. 독립성 검정 4. 동질성 검정 1. 도수분포표 및 분할표 범주형 자료의 분포를 살펴보기 위해 SAS의 FREQ 프로시저를 이용합니다. 1) 1개 특성의 분포 1) FREQ */ /* 1개 특성의 분포표 */ PROC FREQ DATA=SASHELP.HEART; TABLES Smoking_Status; RUN; [결과] - 전체 관찰 대상 중 흡연 정도에 따라 분포 빈도와 비율을 살펴봅니다. - 우선은 Non-smoker비율이 약 48%로 비흡연자의 .. 2021. 1. 7.