3-1. R 프로그래밍
새 R 프로그램 만들기 - 마이컴파일러 - myCompiler
실행 코드 코드 저장 기존 코드를 유지하시겠습니까? 에디터에 코드가 있는 동안 언어를 전환하려고 합니다. 이를 유지하려면 “기존 코드 유지”를 선택합니다. 예제로 바꾸려면 “예제로 바
www.mycompiler.io
1) 자료구조
데이터 유형 - 숫자, 논리, 문자
데이터 구조
- 스칼라: 값이 하나
- 벡터 : 값이 하나 또는 여러개, 1차원
- 행렬 : @ + 2차원
- 배열 : @ + n차원
- 데이터 프레임 : 행렬, 단 열마다 다른 자료형을 지닐 수 있음
- 리스트 : 해적왕
- 팩터 : 범위값
* NA = 결측치, 결측값
벡터나 행렬은 모두 같은 자료형을 지닌다.
논리 벡터 + 숫자 벡터 = 숫자 벡터
논리 + 숫자 + 문자 벡터 = 문
=======================================
2) 명령어
a = 3
a <- 3
a <<- 3
3 -> a
ls() -> 변수 목록
rm() -> 변수 삭제
변수 할당
c(1,5) // 1,5
c(1:5) // 1,2,3,4,5
seq(1,5) // 1,2,3,4,5
seq(1:5) // 1,2,3,4,5
1:5 // 1,2,3,4,5
c는 콤마와 세미콜로에 따라 값이 달라진다
seq는 무조건 수열을 생성한다.
수열은 바로 대입 가능. 콤마는 불가
a <- seq(1,5) // 1,2,3,4,5
a[1] = 1
a[5] = 5
R의 배열은 0이 아닌 1부터 시작.
sum()총합
mean() 평균
median() 중앙값
var() 분산
sd() 표준편차
*sd = sqrt(var) = var^(1/2)
*stdev()란 함수는 존재하지 않음
summary()
4분위수, 최소값, 최대값, 중앙값, 평균 + NA 개수 출력
명목형 변수 factor은 명목값과 그에 해당하는 데이터의 개수 출력
head()
tail()
디폴트 출력은 6개
데이터프레임 결합
rbind(dfrm1, dfrm2) //행결합
cbind(dfrm1, dfrm2) //열결합
merge(dfrm1, dfrm2, by="공통열") //병합
colnames(dfrm) // 변수 속성 조회
NA_cleaning <- na.omit(dfrm)
행 결합 시에는 열의 종류와 개수가,
열 결합시엔 행의 개수가 같아야함.
merge는 inner join
행렬은 디폴트로 열방향으로 값을 채우며
byrow 옵션을 설정하면 행부터 값을 넣는다.
bycol 옵션은 없다.
========================================
3) 결측치 (NA)
z = NA
is.na(z) -> true
z == NA -> na
[1,2,3,NA] * 3 = [3,6,9,NA]
mean(c(1,2,3,NA)) = NA
NA에 연산을 취하면 무조건 NA를 리턴한다.
그렇기에 ==이 아닌 is.na()로 확인해야한다.
complete.cases() -> 데이터에 결측값이 하나라도 있으면 FALSE, 아니면 TRUE
complete.cases는 NA가 하나라도 있으면 False
is.na()는 NA면 TRUE를 리턴한다
결측값 처리 방법
- 단순 대치
1) complete 대치 - NA를 없앰
2) 평균 대치
3) 단순 확률 대치 - 추정량의 표준 오차의 과소 추정 문제 보완
- 다중 대치 - 단순 대치를 m번
* deafult 값은 결측치로 처리하면 안됨
* 결측치 20% 이상은 제거가 바람직
이상값(Outlier) 규정
- IQR을 Q3 -Q1이라 할때 Q1 - 1.5 * IQR < X < Q3 + 1.5 * IQR
- ESD = 평균으로부터 3 표준편차 떨어진 값
-> 부정 사용 방지 시스템 / 부도 예측 시스템 / 침입 & 사기 탐지 / 의료
- 이상치는 분포를 왜곡할 수 있으나 실제 오류인지는 모르기에 함부로 제거하면 안됨
* 결측치와 다름!
================================================
4) 데이터 마트 & 패키지
데이터 마트
- 데이터의 한 부분
- 특정 사용자가 관심을 갖고 있는 데이터를 담은 비교적 작은 규모의 데이터 웨어하우스
요약 변수
- 수집된 정보를 분석에 맞게 종합한 변수
- 기본적인 변수 = 공통적으로 많이 사용됨 = 재활용성 높음
파생 변수
- 사용자가 직접 의미를 부여한 변수
- 주관적이므로 논리적 타당성을 고려해야함
패키지
- install.packages("패키지명") -> library(패키지명)
1) reshape
- 변수를 조합해 변수명 생성, 다양한 요약 변수와 파생 변수 생성 -> 데이터 마트 구성
- melt()외 cast()로 구성
melted_data <- melt(data, id = c("ID", "Date"))
melt()를 사용하면 id로 지정한 ID와 Date를 key로 지정하고
그 외의 값들을 늘려서 보여준다
wide_data <- cast(melted_data, ID + Date ~ variable)
cast()를 사용지 ID와 Date를 기준으로, variable을 열 이름으로 지정해 변환한다
2) sqldf
- R에서 표준 sql 명령을 실행
- SAS에선 proc sql을 사용
- sqldf("select * from student")
3) plyr
- apply 함수에 기반, 데이터와 출력 변수를 동시에 배열로 치환
- 멀티코어 어쩌구
- daply = 데이터프레임 -> 배열
- adply = 배열 -> 데이터프레임
ddply(chickwts, ~feed, summarize, groupmean=mean(weight))
chickwts는 weight와 feed 2개의 속성으로 구성
~feed를 썼으므로 feed 변수를 기준으로 데이터를 분할
이후 각 그룹에 연산을 수행하려면 summarize 옵션을 넣어야함
groupmean = 새로운 열 이름
mean(weight) = 각 그룹의 weight 평균값
4) data.table
- 큰 데이터의 탐색, 연산, 병합에 사용
- 특정 Column을 key 값으로 색인 지정