R:dplyr(데이터프레임 조작)

학교의 모든 지식. 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:연구용 팁

개요[편집 | 원본 편집]

데이터 전처리에 편하다.

주요기여자
전신 plyr 하들리 위컴, 로메인 프랑소와
목적 데이터프레임을 직관적으로 다루기 위함.
장점 꼭 문법에 맞출 필요 없이 마구잡이로 넣어도 작동한다.

작성요령[편집 | 원본 편집]

가독성을 위해 파이프연산자 이후에 개행을 해주는 게 관례이다.(이곳에선 다양한 사례를 좁은 공간에 표현하기 위해 한줄로 쓴다.)

dplyr[편집 | 원본 편집]

데이터 추출, 접근[편집 | 원본 편집]

이름 기원 기능 사용법
slice() index를 설정하여 원하는 행을 추출한다. 데이터셋 = 데이터셋 %>%

slice(1:10)

select() 원하는 열 추출. column명을 쓸 수 있다. 데이터셋 = 데이터셋 %>% select(1:10, 열이름1, 열이름2, ...) #여러개 동시 추출 가능

데이터셋 %>% select(열이름1, -열이름2, ...) #'-'가 붙은 열을 제외하고 추출.

filter() 원하는 행 추출. 데이터셋 = 데이터셋 %>% filter(열이름1 == "해당내용") #해당내용에 일치하는 행만 뽑아낸다.

데이터셋 %>% filter(열이름 >= 50) #50이상만 뽑아낸다.

데이터셋 %>% filter(열이름1 >=50, 열이름2 >70) #조건이 많은 경우, 쉼표로 구분한다. 혹은 &.

위에선 and연산이었다면, or연산도 가능.

| 연산자나 %in%을 사용한다.

데이터셋 = 데이터셋 %>% filter(열이름1 == "해당내용" | 열이름2 =="해당내용") #or연산도 가능하다.

데이터셋 = 데이터셋 %>% filter(열이름 %in% c("내용1", "내용2")) # %in%연산자로도 가능.

select_if() 뽑는 조건을 설정할 수 있다.

ex) 데이터타입에 따라 뽑는다든가.

데이터셋 = 데이터셋 %>%

select_if(is.integer)

top_n() 가장 값이 높은 값들을 추출.

top_n(숫자, 열이름)

top_n(5, Year)

데이터 조작[편집 | 원본 편집]

이름 기원 기능 사용법
arrange() 데이터 정렬.

기본적으로 오름차순인데, 변수에 '-'를 붙여주면 내림차순이 된다.

데이터셋 = 데이터셋 %>% arrange(-열이름)

데이터셋 %>% arrange(-열이름1, 열이름2) #1에 대해 정렬 후에 2에 대한 조건으로 정렬한다.

데이터 변형[편집 | 원본 편집]

이름 기원 기능 사용법
mutate() 하나의 변수를 추가한다.

혹은 컬럼 변형.

데이터셋 = 데이터셋 %>% mutate(추가할열이름 = 연산식)

데이터셋 %>% mutate(avg = (math+english)/2)

데이터셋 %>% mutate(열이름 = ifelse(avg>=60, "참값", "거짓값") #ifelse를 활용할 수도 있다.


mutate(createdAt = str_replace_all(createdAt, ":", "_"))

#createAt 안의 : 들이 _로 바뀌어 들어간다.

mutate_if() 조건에 해당하면 실행한다.

mutate_if(판별문, 실행문)

데이터셋 = 데이터셋 %>% mutate_if(조건, 명령)

데이터셋 %>% mutate_if(is.integer, as.numeric) #정수라면 numeric으로 취급한다.

mutate_at() 지정한 변수들에 대해 계산 적용.

열이름에 '-'를 넣으면 그 변수는 빼고 계산한다.

데이터셋 = 데이터셋 %>% mutate_at(vars(열이름1, 열이름2, ...,), 연산식)

집계데이터 만들기[편집 | 원본 편집]

이름 기원 기능 사용법
group_by() 집계기준 조합을 정해준다.

집계된 그룹을 따라 연산해 열을 만들 수 있다.

일반적으로 summarise와 같이 사용.

데이터셋 %>% group_by(열이름1, 열이름2, ...) #table()과 같은 방식으로 그룹화한다.
ungroup() 다시 사용할 땐 에러방지를 위해 ungroup 해주기. 데이터형 = 기존데이터형 %>%

ungroup()

summarise() 요약통계량 산출.

그룹의 통계량을 구할 수 있다.

그룹별로 mean, max 등 값을 얻을 수 있음.

(n함수는 그룹에 해당하는 갯수를 세어주는 함수)

데이터셋 %>% group_by(열이름1, 열이름2) %>% summarise(열이름3 = 연산, 열이름4 = 연산, ....)

데이터셋 %>% group_by(class, pass) %>% summarise(n_pass =n()) #반별로 pass 여부를 세어준다.

count() 그룹화 이후에 사용하면 해당 그룹에 속한 데이터 갯수를 세어준다. 집계데이터 = 데이터셋 %>%

group_by(열이름1, 열이름2) %>%

count()

이름 기원 기능 사용법
distinct() 중복데이터 제거.

해당 열이름에서 하나라도 중복되면 지운다.

데이터셋 = 데이터셋 %>%

distinct(열이름1, 열이름2, 열이름3, ...)