본 게시글은 SAS와 R 코드를 비교하는 글로 표준편차에 조건절을 활용한 코드를 비교하려고 합니다.
표준편차(Standard Deviation)
표준편차란 평균에 대한 오차입니다.
데이터 값이 평균을 기준으로 할 때, 각 데이터가 얼마나 흩어져 있는지를 확인하기 위해 사용됩니다.
Q. basic1.csv 데이터 셋에서 'f4'컬럼 값이 'ENFJ'와 'INFP'인 값들을 필터링 해 각 각 'f1' 칼럼의 표준편차 차이를 절대값으로 출력
- 사용 데이터 : basic1.csv
- 칼럼은 id / age / city / f1 / f2 / f3 / f4 / f5로 구성되어 있습니다.
library(dplyr)
df=read.csv('../input/bigdatacertificationkr/basic1.csv')
df %>%
filter(f4=='ENFJ' | f4=='INFP') %>%
group_by(f4) %>%
summarise(value=sd(f1,na.rm=T)) %>%
select(value) %>% apply(2,diff) %>%
abs
1. library(dplyr)
R은 오픈소스 프로그램으로 많은 유저들이 통계 도구들을 만들어 온라인 상에 무료로 기능을 쓸 수 있게 배포합니다.
패키지를 사용하기 위해서는 1) 패키지를 설치하고 2) 패키지를 로드 합니다.
1) insall.package(dplyr): 처음에 패키지를 설치하기 위해서 사용하는 명령문.
2) library(dplyr): 패키지를 설치한 후, 패키지를 불러오기 위한 명령문
dplyr 이란 패키지를 불러옵니다.
dplyr 패키지는 데이터 전처리에 특화된 패키지로 데이터를 처리하는 함수군으로 구성되어 있습니다.
%>% 체인 연산자 기호와 함께 데이터 전처리에서 사용됩니다.
2. read.csv
파일을 불러오는 명령문
3. group by
Group by function은 데이터를 그룹화하는데 사용합니다.
특정 열을 기준으로 데이터를 그룹화해 집계 함수를 설정하면 그룹 단위의 결과값을 출력합니다.
4. summarise
다양한 통계함수를 사용해서 데이터 셋의 특정 변수에 속한 값들을 하나의 통계값으로 요약하여 출력하는 function입니다.
summaize()와 동일한 function으로 평균, 중위값, 최소값, 최대값, 분산, 표준편차, 4분위값, 합계, 빈도수 등을 출력할 수 있습니다.
5. apply
행(Row) 또는 열(Column) 단위의 연산을 쉽게 할 수 있도록 지원하는 함수.
* 행(1) 단위로 mean 연산
위 코드는 iris 데이터를 행(1) 단위로 평균값을 구하는 코드입니다.
* 열(column) 단위로 mean 연산
/* 1. */
proc import datafile="/home/u45061472/basic1.csv" out=df
dbms=csv replace;
getnames=yes;
run;
/* 2. */
data filtered;
set df;
where f4 in ('ENFJ', 'INFP');
run;
/* 3. */
proc means data=filtered noprint;
class f4;
var f1;
output out=sd_values std=sd_f1;
run;
/* 4 */
data diff_sd;
set sd_values;
diff_sd = abs(sd_f1_ENFJ - sd_f1_INFP);
run;
/* 5. */
proc print data=diff_sd noobs;
var diff_sd;
run;
1. PROC IMPORT
외부 데이터를 불러오는 명령문입니다.
DATA = : 파일 위치 또는 파일명을 지정.
DBMS = : 파일 형식을 설정.
OUT = : 원본 데이터는 그대로 유지되고, 원하는 데이터 형식의 데이터를 생성합니다.
REPLACE : 이미 데이터가 존재하면 데이터 세트를 덮어쓰는 것 입니다. 코드를 실행할 때마다 데이터 세트의 이름을 변경하거나 삭제할 필요가 없어서 실행 단계를 단순화 할 수 있습니다.
2. Data filtered
새로운 filtered 라는 새로운 데이터셋을 생성합니다.
set df: 기존에 있던 df 데이터 셋을 읽습니다.
where f4 in ('ENFJ', 'INFP'): f4칼럼이 ENFJ 또는 INFP인 행들만 선택하는 조건절 입니다.
3. Proc means
데이터의 통계요약을 보여주는 명령문입니다.
noprint: 결과를 출력하지 않도록 설정합니다.
class f4: 그룹변수로 f4칼럼을 설정합니다. f4 변수의 각 범주에 대한 통계량을 계산합니다.
var f1: 분석할 변수를 세팅합니다.
4. Data diff_ed ~
set sd_values: sd_values라는 데이터 셋을 하나씩 읽어옵니다.
diff_Sd = abs(sd_f1_enfj - sd_f1_infp): ENFJ 그룹과 INFP 그룹의 표준편차를 계산합니다.
Save $250 on SAS Innovate and get a free advance copy of the new SAS For Dummies book! Use the code "SASforDummies" to register. Don't miss out, May 6-9, in Orlando, Florida.