SAS 커뮤니티 한국 페이지 안내
‘SAS 커뮤니티 한국 페이지’는 국내 SAS 사용자의 SAS에 대한 이해를 돕고 국내외 사용자들과 서로 경험을 공유하기 위해 마련된 기회의 장입니다.
커뮤니티 페이지 참여하여 SAS 솔루션 구축 노하우 및 사용 팁을 포함한 다양한 정보를 얻고, 서로의 경험을 공유해 보세요. SAS 사용자 여러분의 많은 참여를 부탁 드립니다.
Group Hub Activity
이번 게시글은 'SAS 실전 활용 가이드 4' 를 이어지는 글로 동일한 데이터 MERGE_DATA를 사용합니다.
■ 데이터 MERGE
SALES 데이터셋과 CUSTOMER 데이터셋을 customer_id와 id를 기준으로 결합하고,
SALES 데이터셋과 PRODUCT 데이터셋을 product_id와 id를 기준으로 데이터를 결합해 새로운 데이터셋인 MERGE_DATA 셋을 만들어냅니다.
PROC SQL;
CREATE TABLE MERGE_DATA AS
SELECT A.*, B.*, C.*
FROM WORK.SALES AS A
LEFT JOIN WORK.CUSTOMER AS B
ON A.CUSTOMER_ID = B.ID
LEFT JOIN WORK.PRODUCTS AS C
ON A.PRODUCT_ID = C.ID;
QUIT;
PROC PRINT DATA=MERGE_DATA (OBS=20); RUN;
■ 지역(PROVINCE)별로 매출 집계
MERGE_DATA를 가지고 지역별로 매출을 분석하고자 합니다.
특정 지역에서 매출이 높은 이유를 파악할 수 있으며 매출 성과가 저조한 지역에 대해 마케팅 전략을 세울 수 있습니다.
PROC SQL;
CREATE TABLE PROSALE AS
SELECT PROVINCE, SUM(SALES) AS SALE
FROM WORK.MERGE_DATA
GROUP BY PROVINCE
order by sale desc;
QUIT;
proc print data = prosale; run;
기존에 고객(Customer), 제품(Products), 매출(Sales) 데이터를 병합한 MERGE_DATA를 가지고 각 지역별로 매출을 집계했습니다. 그 결과, Ontario 가 매출이 가장 높았으며, Newfoundland 매출이 가장 낮았습니다.
GROUP BY: province 별로 데이터를 그룹화하여 매출을 집계했습니다.
■ 지역별 매출 비율 분석
지역(Province) 별로 매출 비중을 분석하고자 합니다.
특정 지역이 전체 매출에서 차지하는 중요도를 파악할 수 있습니다.
proc sql;
create table propct as
select province, sale, sale/sum(sale) as pct
from prosale;
quit;
proc print data = propct; run;
각 지역별 총 매출을 집계해서 PROSALE 테이블을 만들었습니다.
PROSALE 테이블에는 PROVINCE(지역)과 SALE(해당 지역 총 매출)이 포함되어 있습니다.
SALE / SUM(SALE) 을 계산하여 PCT(Percentage_전체 대비 비율) 칼럼을 생성합니다.
■ 파이 차트 그리기
PROC GCHAT는 그래프를 생성할 수 있는 Statement 로 데이터를 사용해 막대 그래프(Bar), 파이 차트(Pie) 등 다양한 차트를 그릴 수 있습니다
proc gchart data = merge_data;
pie province / discrete sumvar = sales;
run;
pie province : Province 별로 파이 차트를 그립니다.
discrete: Province 고유값을 각각 표시합니다.
sumvar = sales : sale (매출) 의 합계를 기준으로 파이 차트 비율을 계산합니다.
... View more

Labels:
0
0
지난 게시글에는 SAS의 사용법과 함께 실제 statement 를 활용해 데이터를 효과적으로 분석하고 직관적인 보고서를 작성하는 방법에 대해서 다루었습니다.
이를 통해 SAS를 활용한 데이터 분석이 단순한 코드 작성이 아니라, 데이터를 보다 쉽게 이해하고 활용하는 과정에 대해서 알 수 있었습니다.
이번 글에서는 새로운 데이터셋을 활용한 실전 사례를 통해 SAS의 강력한 분석 기능을 한층 더 심도 있게 익혀보겠습니다.
■ 분석 데이터
데이터셋은 총 4개 입니다.
DataSet 1. Customers
1055 개의 데이터와 4개의 칼럼(Customer_name, Province , Customer_Segment, id) 으로 구성되어 있습니다.
PROC IMPORT OUT=WORK.CUSTOMER
DATAFILE= 'C:/customers.xlsx'
DBMS=XLSX
REPLACE;
GETNAMES = YES;
RUN;
proc print data = work.customer; run;
DataSet2. Product
1,093개의 데이터, 5개의 칼럼(Product_Category, Product_Sub_Category, Product_Name, Product_Container, Id)으로 구성되어 있습니다.
DstaSet3. Sales
2,999개의 데이터, 21개의 칼럼(Row_ID, Order_ID, Order_Date, Order_Quantity, Sales, Discount , Ship_Mode, Profit, Unit_Price, Shipping_Cost, Customer_Name, Province, Customer_Segment, Product_Category, Product_Sub_Category, Product_Name, Product_Container, Product_Base_Margin, Ship_Date, customer_id, product_id) 으로 구성되어 있습니다.
DataSet4. Returns
572개의 데이터, 2개의 칼럼( Order ID, Status) 로 구성되어 있습니다.
위 4개의 데이터셋은 Customer I.D 칼럼과 Product 칼럼을 기반으로 서로 연결되어 있으며, 하나의 데이터로 병합할 수 있습니다.
■ 데이터 병합
PROC SQL;
CREATE TABLE MERGE_DATA AS
SELECT A.*, B.*, C.*
FROM WORK.SALES AS A
LEFT JOIN WORK.CUSTOMER AS B
ON A.CUSTOMER_ID = B.ID
LEFT JOIN WORK.PRODUCTS AS C
ON A.PRODUCT_ID = C.ID;
QUIT;
PROC PRINT DATA=MERGE_DATA (OBS=20); RUN;
CREATE TABLE MERGE_DATA: 새로운 테이블 MERGE_DATA를 생성하는 SQL 문입니다.
SELECT A.*, B.*, C.* : A(SALES), B(CUSTOMER),C(PRODUCTS) 테이블의 모든 컬럼을 선택합니다.
LEFT JOIN WORK.CUSTOMER AS B
ON A.CUSTOMER_ID = B.ID : SALES 테이블(A)의 CUSTOMER_ID 칼럼과 PRODUCTS 테이블(B) 의 ID 칼럼을 기준으로 병합니다.
■ 고객별 매출 집계
데이터를 병합하고 SQL을 활용하여 고객별 매출 데이터를 계산하려고 합니다.
PROC SQL;
CREATE TABLE WORK.PERCUS AS
SELECT CUSTOMER_NAME, SUM(PROFIT) AS PROFIT
FROM WORK.MERGE_DATA
GROUP BY CUSTOMER_NAME
ORDER BY PROFIT DESC;
QUIT;
RUN;
WORK라이브러리에 MERGE_DATA 테이블에서 고객(CUSTOMER_NAME)별 총 이익( SUM(PROFIT))을 계산하는 코드입니다.
... View more

0
0
이번 게시글을 통해서 다양한 상황에 맞게 데이터를 그룹화하고, 각 클래스별로 세부적인 보고서를 작성하는 방법을 알 수 있습니다.
이를 통해 데이터를 효과적으로 분석하고 직관적으로 보고소를 작성하는데 필요한 기술을 익힐 수 있습니다.
활용할 데이터는 'SAS 실전 활용 가이드 1' 에서 다운 받을 수 있습니다.
#1. 데이터 Import
PROC IMPORT
DATAFILE='C:/sales.xlsx'
DBMS=XLSX
REPLACE
OUT=WORK.IMPORT;
GETNAMES=YES;
RUN;
이번 게시글을 통해서 다양한 상황에 맞게 데이터를 그룹화하고, 각 클래스별로 세부적인 보고서를 작성하는 방법을 알 수 있습니다.
이를 통해 데이터를 효과적으로 분석하고 직관적으로 보고소를 작성하는데 필요한 기술을 익힐 수 있습니다.
활용할 데이터는 'SAS 실전 활용 가이드 1' 에서 다운 받을 수 있습니다.
#1. 데이터 Import
PROC IMPORT
DATAFILE='C:/sales.xlsx'
DBMS=XLSX
REPLACE
OUT=WORK.IMPORT;
GETNAMES=YES;
RUN;
SALES 데이터는 칼럼은 21개, 전체 행은 2999개의 데이터로 구성되어 있습니다.
21개의 칼럼 중에 Province 라는 칼럼이 있습니다. (Province 칼럼은 '주' 또는 '도'를 의미하는 단어로 특정 국가 내에서 행정 구역을 나타내는 용어입니다. ) Province 칼럼에는 Alberta, Ontario 등 다양한 지역을 구분하는 행정 단위 데이터가 있습니다.
#2. 데이터 그룹화 1
이번에는 Province 변수를 기준으로 데이터를 그룹화하여 각 지역별로 분석을 진행하려고 합니다.
proc print data = sale (obs = 20); run;
proc sort data = sale;
by province;
run;
# 3. 데이터 그룹화 2
PROC PRINT DATA = WORK.SALE noobs;
var sales shipping_cost profit;
where shipping_cost>10;
format profit dollar9.2;
title 'Province 별로 비싼 배송비를 지불한 주문 사례';
sum profit;
by province;
RUN;
위 코드는 'SAS 실전 활용 가이드2; 글에서 'BY Provine'를 추가한 코드로 Province 별로 그룹화하여 출력하는 statement 입니다. 각각의 그룹에 대해 개별적으로 출력합니다.
BY statement 를 사용할 때는 데이터가 미리 정렬 되어 있어야합니다.
⁞
# 4. 데이터 그룹화 3 + ID statement
PROC PRINT DATA = WORK.SALE noobs;
var sales shipping_cost profit;
where shipping_cost>10;
format profit dollar9.2;
title 'Province 별로 비싼 배송비를 지불한 주문 사례';
sum sales profit;
by province;
id province;
RUN;
바로 위 #3 코드에서 ID statement 를 추가한 코드로 출력에서 각 행의 식별자로 사용할 변수를 같이 출력할 때 사용됩니다. 주로 BY 구문을 사용하여 데이터를 그룹화한 후에 사용됩니다.
⁞
# 3. 데이터 그룹화 2 와 비교해보면 출력 레포트에서 Province 변수를 각 행의 식별자로 사용한 것을 확인할 수 있습니다.
... View more

Labels:
0
0
이번 게시들은 데이터를 'SAS 실정 활용 가이드 1' 에 이어지는 글로,
SAS의 기능을 활용하여 데이터를 강조하고 분석 결과를 한눈에 보기 쉽게 만드는 방법에 대해 알아볼 예정입니다.
데이터 분석에서 총합을 계산하고 표시하는 방법에 대해 다룰 예정입니다.
total profit 을 확인하기 위해 마지막에 총합 행을 추가하는 방법으로 데이터 분석의 완성도를 높이고 정보를 명확하게 전달합니다. 또한, 분석결과를 직관적이고 이해하기 쉽게 만들어 주어 데이터를 해석하는데 중요한 역할을 합니다.
PROC IMPORT
DATAFILE='C:/sales.xlsx'
DBMS=XLSX
REPLACE
OUT=WORK.SALE;
GETNAMES=YES;
RUN;
PROC PRINT DATA = WORK.SALE; RUN;
SALES 라는 데이터는 21개의 칼럼과 2,999 개의 데이터로 이루어졌습니다.
PROC PRINT DATA = WORK.SALE (obs=15) noobs;
var sales shipping_cost profit;
where shipping_cost>10;
format profit dollar9.2;
title '비싼 배송비를 지불한 주문 사례';
sum profit;
RUN;
PROC PRINT: work.sale 데이터 셋을 출력하는 statement 입니다. 'obs = 15' 라는 옵션으로 처음 15개의 행만 출력합니다. (데이터셋이 15개 이상이면 상위 15개 행만 출력합니다.) noobs 옵션으로 행 번호를 출력하지 않도록 합니다.
VAR: 출력할 변수들을 지정하는 구문입니다. 위 코드에서는 sales, shipping_cost, profit 변수만 출력합니다.
WHERE : 조건문으로 shipping_cost 가 10보다 큰 행들만 출력하도록 필터링합니다.
FORMAT: profit 변수의 값을 dollar 9.2 (달러형식) 형식으로 출력합니다.
TITLE: 출력시 제목을 설정합니다.
SUM: profit 변수의 합계를 계산하여 결과에 포함시킵니다.
... View more

Labels:
0
0
이번 글은 실무에서 활용할 수 있는 다앙한 SAS 문법과 로직을 소개할 예정입니다.
SAS를 처음 접하는 분들부터 실무에서 활용하고 싶은 분들까지 도움이 되는 내용을 공유하겠습니다!
■ PROC PRINT statement 로 상세한 보고서 만들기
STEP1. 데이터셋 가져오기: SAS IMPORT 활용
PROC IMPORT
DATAFILE='C:/sales.xlsx'
DBMS=XLSX
REPLACE
OUT=WORK.IMPORT;
GETNAMES=YES;
RUN;
PROC IMPORT : 외부의 데이터를 가져오는 statement 입니다.
DATAFILE = : 불러올 데이터 파일의 경로를 지정합니다.
DBMS = : 불러올 데이터의 파일 형식을 지정합니다. 파일이 XLS 형식이면, 'DBMS = XLS', CSV면 'DBMS = CSV' 로 설정해야합니다.
REPLACE: 기존에 동일한 형식의 데이터셋이 있을 경우에는 덮어쓰기를 한다라는 옵션입니다. 해당 옵션이 없고, 동일한 이름의 데이터셋이 있을 경우에는 오류가 발생합니다.
OUT = : SAS 내부의 데이터셋으로 저장할 수 있도록 합니다. 위 코드에서는 SALE이라는 데이터셋으로 저장했습니다.
PROC PRINT DATA = WORK.SALE; RUN;
PROC PRINT: 데이터를 출력하는 statement 로 데이터를 테이블 형식으로 출력합니다. 그 결과로 칼럼은 21개, 전체 행은 2999개의 데이터가 출력됐습니다.
PROC PRINT DATA = WORK.SALE (obs=20); RUN;
'OBS = ': 최대 N개의 행만 출력할 수 있는 옵션으로, 위 코드는 처음 20개 행만 출력하는 코드입니다.
위 데이터를 출력한 결과를 보면, OBS라고 칼럼처럼 보이는 칼럼이 있습니다.
OBS는 칼럼이 아니라 Observations의 약어로 행 번호를 의미합니다. ;
데이터셋의 칼럼인 Row_ID, Order_ID의 데이터는 흰색으로 표시되는 반면, OBS는 살짝 파란색으로 표시도어 행 번호임을 알 수 있습니다.
PROC PRINT DATA = WORK.SALE (obs=20) NOOBS; RUN;
만약 행 번호 없이 데이터만 출력하고 싶다면 'NOOBS'라는 옵션으로 데이터를 출력할 수 있습니다.
... View more

0
0