R:dplyr(데이터프레임 조작): 두 판 사이의 차이

학교의 모든 지식. SMwiki
둘러보기로 이동 검색으로 이동
(새 문서: {{R}}<br /> == 개요 == {| class="wikitable" |+ ! ! ! !주요기여자 |- !전신 |plyr | |하들리 위컴, 로메인 프랑소와 |- !목적 | | | |} ==dplyr== 구성이 복잡...)
 
 
(같은 사용자의 중간 판 5개는 보이지 않습니다)
1번째 줄: 1번째 줄:
{{R}}<br />
{{R}}<br />


== 개요 ==
==개요==
데이터 전처리에 편하다.
{| class="wikitable"
{| class="wikitable"
|+
|+
!
!
!
!
!
11번째 줄: 11번째 줄:
!전신
!전신
|plyr
|plyr
|
|하들리 위컴, 로메인 프랑소와
|하들리 위컴, 로메인 프랑소와
|-
|-
!목적
!목적
|
|
|데이터프레임을 직관적으로 다루기 위함.
|-
!장점
|
|
|
|꼭 문법에 맞출 필요 없이 마구잡이로 넣어도 작동한다.
|}
|}
===작성요령===
가독성을 위해 파이프연산자 이후에 개행을 해주는 게 관례이다.(이곳에선 다양한 사례를 좁은 공간에 표현하기 위해 한줄로 쓴다.)


==dplyr==
==dplyr==
구성이 복잡한 경우, <code>%>%</code>를 활용하여 연산을 펴서 입력하기 위한 도구이다.


데이터셋[범위] %>% #범위를 설정하고


rowMeans() %>% #연산할 함수를 설정한다.
===데이터 추출, 접근===
{| class="wikitable"
!이름
!기원
!기능
!사용법
|-
|slice()
|
|index를 설정하여 원하는 행을 추출한다.
|데이터셋 = 데이터셋 %>%
slice(1:10)
|-
|select()
|
|원하는 열 추출. column명을 쓸 수 있다.
|데이터셋 = 데이터셋 %>% select(1:10, 열이름1, 열이름2, ...) #여러개 동시 추출 가능
데이터셋 %>% select(열이름1, -열이름2, ...) #'-'가 붙은 열을 제외하고 추출.
|-
| rowspan="2" |filter()
| rowspan="2" |
|원하는 행 추출.
|데이터셋 = 데이터셋 %>% filter(열이름1 == "해당내용") #해당내용에 일치하는 행만 뽑아낸다.
데이터셋 %>% filter(열이름 >= 50) #50이상만 뽑아낸다.
 
데이터셋 %>% filter(열이름1 >=50, 열이름2 >70) #조건이 많은 경우, 쉼표로 구분한다. 혹은 &.
|-
|위에선 and연산이었다면, or연산도 가능.
<nowiki>|</nowiki> 연산자나 %in%을 사용한다.
|<nowiki>데이터셋 = 데이터셋 %>% filter(열이름1 == "해당내용" | 열이름2 =="해당내용") #or연산도 가능하다.</nowiki>
데이터셋 = 데이터셋 %>% filter(열이름 %in% c("내용1", "내용2")) # %in%연산자로도 가능.
|-
|select_if()
|
|뽑는 조건을 설정할 수 있다.
ex) 데이터타입에 따라 뽑는다든가.
|데이터셋 = 데이터셋 %>%
select_if(is.integer)
|-
|top_n()
|
|가장 값이 높은 값들을 추출.
top_n(숫자, 열이름)
|top_n(5, Year)
|-
|
|
|
|
|-
|
|
|
|
|-
|
|
|
|
|-
|
|
|
|
|}
 
===데이터 조작===
{| class="wikitable"
!이름
!기원
!기능
!사용법
|-
|arrange()
|
|데이터 정렬.
기본적으로 오름차순인데, 변수에 '-'를 붙여주면 내림차순이 된다.
|데이터셋 = 데이터셋 %>% arrange(-열이름)
데이터셋 %>% arrange(-열이름1, 열이름2) #1에 대해 정렬 후에 2에 대한 조건으로 정렬한다.
|-
|
|
|
|
|-
|
|
|
|
|}
 
===데이터 변형===
{| class="wikitable"
!이름
!기원
!기능
!사용법
|-
|mutate()
|
|하나의 변수를 추가한다.
혹은 컬럼 변형.
|데이터셋 = 데이터셋 %>% mutate(추가할열이름 = 연산식)
데이터셋 %>% mutate(avg = (math+english)/2)


head() #이어서 연산할 것들을 덧붙인다.
데이터셋 %>% mutate(열이름 = ifelse(avg>=60, "참값", "거짓값") #ifelse를 활용할 수도 있다.


한 줄로 쓸 수 있지만, 그렇게 하면 읽기 복잡해진다. 이를 직관적으로 보기 위한 기능.


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


또한 %>% 로 다른 명령어와 연계할 수 있어, 굉장히 편하게 사용할 수 있다.
<nowiki>#</nowiki>createAt 안의 : 들이 _로 바뀌어 들어간다.
|-
|mutate_if()
|
|조건에 해당하면 실행한다.
mutate_if(판별문, 실행문)
|데이터셋 = 데이터셋 %>% mutate_if(조건, 명령)
데이터셋 %>% mutate_if(is.integer, as.numeric) #정수라면 numeric으로 취급한다.
<br />
|-
|mutate_at()
|
|지정한 변수들에 대해 계산 적용.
열이름에 '-'를 넣으면 그 변수는 빼고 계산한다.
|데이터셋 = 데이터셋 %>% mutate_at(vars(열이름1, 열이름2, ...,), 연산식)
|-
|
|
|
|
|-
|
|
|
|
|-
|
|
|
|
|-
|
|
|
|
|-
|
|
|
|
|}
===집계데이터 만들기===
===집계데이터 만들기===
{| class="wikitable"
{| class="wikitable"
44번째 줄: 190번째 줄:
|집계기준 조합을 정해준다.
|집계기준 조합을 정해준다.
집계된 그룹을 따라 연산해 열을 만들 수 있다.
집계된 그룹을 따라 연산해 열을 만들 수 있다.
|집계데이터 = 데이터셋 %>%
group_by(열이름1, 열이름2) %>%


summarise(열이름3 = 연산, 열이름4 = 연산, ....)
일반적으로 summarise와 같이 사용.
|데이터셋 %>% group_by(열이름1, 열이름2, ...) #table()과 같은 방식으로 그룹화한다.
|-
|-
|ungroup()
|ungroup()
54번째 줄: 199번째 줄:
|데이터형 = 기존데이터형 %>%
|데이터형 = 기존데이터형 %>%
ungroup()
ungroup()
|-
|summarise()
|
|요약통계량 산출.
그룹의 통계량을 구할 수 있다.
그룹별로 mean, max 등 값을 얻을 수 있음.
(n함수는 그룹에 해당하는 갯수를 세어주는 함수)
|데이터셋 %>% group_by(열이름1, 열이름2) %>% summarise(열이름3 = 연산, 열이름4 = 연산, ....)
데이터셋 %>% group_by(class, pass) %>% summarise(n_pass =n()) #반별로 pass 여부를 세어준다.
|-
|-
|count()
|count()
62번째 줄: 219번째 줄:


count()
count()
|}
{| class="wikitable"
!이름
!기원
!기능
!사용법
|-
|
|
|
|
|-
|
|
|
|
|-
|
|
|
|
|-
|
|
|
|
|-
|distinct()
|
|중복데이터 제거.
해당 열이름에서 하나라도 중복되면 지운다.
|데이터셋 = 데이터셋 %>%
distinct(열이름1, 열이름2, 열이름3, ...)
|}
|}

2020년 9월 26일 (토) 11:13 기준 최신판

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, ...)