R:팁

학교의 모든 지식. SMwiki
둘러보기로 이동 검색으로 이동

R언어 공부를 위한 틀 틀:R

  1. R:개요
    1. R:코딩팁
    2. R:연산자
  2. R:객체
    1. R:자료형
    2. R:자료구조
  3. R:함수
    1. R:자주사용하는 함수
      1. R:aplly계열(반복문, 중복작업)
  4. R:제어문
    1. R:조건문
    2. R:반복문
  5. R:자료조작
    1. R:데이터프레임
    2. R:행렬
  6. R:데이터 저장과 불러오기
    1. R:데이터베이스
    2. R:특정조건 추출하기
  7. R:패키지
    1. R:magrittr(파이프연산자)
    2. R:dplyr(데이터프레임 조작)
    3. R:ggplot2(그래프그리기)
    4. R:KoNLP(한글 텍스트마이닝), wordcloud2(워드클라우드)
    5. R:ddply(데이터 집계, 조작)
    6. R:tidyverse(데이터를 정제하는 패키지들의 집합)
    7. R:jsonlite(JSON 파일 다루기)
    8. R:pbapply(apply계열에 진행바를 보여준다.)
  8. R:활용
    1. R:데이터 접근
    2. R:연관성분석
    3. R:분류분석
  9. R:팁
    1. R:연구용 팁



데이터 다루기 전략

데이터를 다룰 땐 절대 raw 데이터를 건드리지 않는다. 항상 복사해 두고 진행하는 게 나중을 위해 좋다.


관련함수

이름 기원 기능 사용법
sample() sample 데이터가 너무 방대해 계산이 오래걸리는 경우.

무작위 추출로 연산을 줄인다.

sample(추출범위, 추출갯수, 복원추출여부)

sample(2:30, 4, replace=False)


False인 경우, 비복원추출을 하겠다는 것.

seed() 무작위 결과값을 고정시켜야 할 때. set.seed(아무숫자)

숫자에 무작위 결과값이 저장된다.



이상치(outlier) 다루기

전체 데이터를 요란시키는 괴상한 데이터. 일반적으로 1분위수와 3분위수 차이의 1.5배만큼 커다랗게 벗어난 값을 이상치라 부른다.

이상치를 구하는 과정
분위수 구하기 1분위수, Q1=quntile(데이터, probs=c(0.25), na.rm=True)

3분위수, Q3=quntile(데이터, probs=c(0.75), na.rm=True)

울타리 구하기 LC=Q1 - 1.5*(Q3-Q1)

UC=Q3 + 1.5*(Q3-Q1)

울타리를 넘으면 이상치

이상치를 모은 부분집합

데이서텟 = subset(데이터셋, 데이터>LC & 데이터<UC)


결측치 다루기

다양한 연산들에서 결측치를 생략하고 계산하고자 한다면 뒤에 na.rm=True를 붙여주면 된다. ex) sum(데이터셋[범위], na.rm=True)


결측치가 포함된 연산은 결과를 NA로 내버리곤 한다; 이런 경우 위의 na.rm=True를 포함하여 계산함수를직접 만들어주어 오류를 피해가야 한다.

의도 방법
열별 결측치 카운팅 colSums(is.na(데이터셋))
결측치가 들어간 행 지우기 데이터셋 = na.omit(데이터셋) 그러나, 결측치 비율이 상당할 경우 위험한 작업이다.
특정 데이터에 결측치가 들어간 경우 삭제 데이터셋 = 데이터셋[complete.cases(데이터셋[범위]), ]
결측치에 일정 값 부여 데이터[is.na(데이터)] = 일정값 일반적으로 연속형변수의 경우, 평균으로 대체하고,

이산현병순의 경우, 최빈값으로 대체한다.

중복값 제거하기

중복데이터를 제거해야 한다. 하나하나 지우기는 너무 어려우니까..

이름 기원 기능 사용법
unique() unique 1차원 벡터의 경우 사용한다. unique(벡터)
duplicate() 2차원 이상일 때. 기본적으로 맨 위의 값을 살려두고 다음에 등장하는 것부터 지운다.

하나라도 같은 항목이 있으면 지운다.(비추천)

새로운데이터셋 = 데이터셋[-which(duplicated(데이터셋)), ]
해당 열 안에서 중복되면 지운다. 새로운데이터셋 = 데이터셋[-which(duplicated(데이터셋$열이름1)), ]
고려해야 하는 변수가 여러개일 때.

열이름 대신 열 번호를 사용해도 된다.

새로운데이터셋 = 데이터셋[!(duplicated(데이터셋[ , c('열이름1', '열이름2', ...)]), ]

데이터 정렬하기

이름 기원 기능 사용법
order() order 순서대로 정렬한다.

새로운데이터셋 = 데이터셋[order(데이터셋[범위], decreasing = True혹은False), ]

새로운데이터셋 = 데이터셋[order(데이터셋[ , '열이름'], decreasing = Ture), ]