R:dplyr(데이터프레임 조작)
R언어 공부를 위한 틀 틀:R
개요
데이터 전처리에 편하다.
주요기여자 | ||
---|---|---|
전신 | plyr | 하들리 위컴, 로메인 프랑소와 |
목적 | 데이터프레임을 직관적으로 다루기 위함. | |
장점 | 꼭 문법에 맞출 필요 없이 마구잡이로 넣어도 작동한다. |
작성요령
가독성을 위해 파이프연산자 이후에 개행을 해주는 게 관례이다.(이곳에선 다양한 사례를 좁은 공간에 표현하기 위해 한줄로 쓴다.)
dplyr
구성이 복잡한 경우, %>%
를 활용하여 연산을 펴서 입력하기 위한 도구이다. 이를 파이프연산자라고 하는데, ctrl+shift+m
으로 바로 쓸 수 있다.
데이터셋[범위] %>% #범위를 설정하고
rowMeans() %>% #연산할 함수를 설정한다.
head() #이어서 연산할 것들을 덧붙인다.
한 줄로 쓸 수 있지만, 그렇게 하면 읽기 복잡해진다. 이를 직관적으로 보기 위한 기능.
또한 %>% 로 다른 명령어와 연계할 수 있어, 굉장히 편하게 사용할 수 있다.
데이터 추출, 접근
이름 | 기원 | 기능 | 사용법 |
---|---|---|---|
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_if() | 조건에 해당하면 실행한다.
mutate_if(판별문, 실행문) |
데이터셋 = 데이터셋 %>%
mutate_if(is.integer, as.numeric) | |
mutate_at() | 지정한 변수들에 대해 계산 적용.
열이름에 '-'를 넣으면 그 변수는 빼고 계산한다. |
데이터셋 = 데이터셋 %>%
mutate_at(vars(열이름1, 열이름2, ...,), 연산식) |
집계데이터 만들기
이름 | 기원 | 기능 | 사용법 |
---|---|---|---|
group_by() | 집계기준 조합을 정해준다.
집계된 그룹을 따라 연산해 열을 만들 수 있다. |
집계데이터 = 데이터셋 %>%
group_by(열이름1, 열이름2) %>% summarise(열이름3 = 연산, 열이름4 = 연산, ....) | |
ungroup() | 다시 사용할 땐 에러방지를 위해 ungroup 해주기. | 데이터형 = 기존데이터형 %>%
ungroup() | |
count() | 그룹화 이후에 사용하면 해당 그룹에 속한 데이터 갯수를 세어준다. | 집계데이터 = 데이터셋 %>%
group_by(열이름1, 열이름2) %>% count() |
이름 | 기원 | 기능 | 사용법 |
---|---|---|---|
distinct() | 중복데이터 제거.
해당 열이름에서 하나라도 중복되면 지운다. |
데이터셋 = 데이터셋 %>%
distinct(열이름1, 열이름2, 열이름3, ...) |