4강: R데이터 분석: 자유자재로 데이터 가공하기
06 자유자재로 데이터 가공하기
dplyr 함수 | 기능 |
filter() | 행 추출 |
select() | 열(변수)추출 |
arrange() | 정렬 |
mutate() | 변수추가 |
summarise() | 통계치 산출 |
group_by() | 집단별로 나누기 |
left_join() | 데이터 합치기 |
bind_rows() | 데이터 합치기 |
06-2 조건에 맞는 데이터만 추출하기
*dplyr 패키지의 filter() 이용하여 데이터 추출하기
#조건에 맞는 데이터만 추출하기
1. dplyr 패키지를 로드한 후 csv_exam.csv 파일을 데이터 프레임으로 만들어 출력하기
2. dplyr 패키지의 filter()로 1반 학생들의 데이터만 추출하기
3.같은 형식으로 2반 학생만 추출하여 보기
4. 변수가 '특정 값이 아닌 경우'에 해당하는 데이터 추출
#초과, 미만, 이상, 이하 조건 걸기
1. 초과일 경우만 추출
2. 미만일 경우만 추출
3. 이상일 경우만 추출
4. 이하일 경우만 추출
# 여러 조건을 충족하는 행 추출하기
1. '그리고'를 의미하는 &를 사용하기
# 여러 조건 중 하나 이상 충족하는 행 추출하기
1. '또는' 을 의미하는 | 를 사용하기
#목록에 해당하는 행 추출하기
1. | 사용하여 1,2,3 반에 속한 학생의 데이터만 추출하기
2. %in% 기호와 c() 함수를 이용하기
#추출한 행으로 데이터 만들기
1. <- 를 이용하여 새로운 데이터 만들기
<R에서 사용하는 기호들(헷갈리는 것)>
^, ** | 제곱 |
%/% | 나눗셈의 몫 |
%% | 나눗셈의 나머지 |
06-3 필요한 변수만 추출하기
#변수 추출하기
1. select() 이용하여 math 만 추출하기
2. english() 추출하기
3. 여러 변수 추출하기
4. 변수 제외하기
#dplyr 함수 조합하기
*dplyr 의 함수들은 %>% 를 이용하여 조합할 수 있다는 장점이 있다.
1. filter() 과 select() 조합하기
2. 가독성 있게 줄 바꾸기
exam %>%
filter(class==1) %>%
select(english)
3. 일부만 출력하기
06-4 순서대로 정렬하기
* arrange() 이용하여 정렬하기
#오름차순으로 정렬하기
#내림차순으로 정렬하기
* 쉼표로 여러 변수를 한번에 정렬할 수 있음
06-5 파생변수 추가하기
*mutate() 사용하여 파생변수 추가할 수 있다.
#파생변수 추가하기
1. exam에 세 과목의 점수를 모두 합한 총합 변수를 만들어 추가한 후 일부 출력하기
2. 여러 파생변수 한번에 추가하기
3. mutate() 에 ifelse() 적용하기
4. 추가한 변수를 dplyr 코드에 바로 활용하기
06-6 집단별로 요약하기
* group_by() 와 summarise() 사용하기
#집단별로 요약하기
1. summarise() 사용하기
2. group_by() 로 집단별로 요약하기
3. 여러 요약 통계량 한번에 산출하기
* n() :행의 갯수 세는 함수
4. 각 집단별로 다시 집단 나누기
각 회사별로, 구동방식에 따라 연비가 어떻게 다른지 알 수 있다.
drv 변수에서 4는 사륜구동, f는 전륜구동, r은 후륜구동을 의미한다.
#dplyr 조합하기
1. 코드를 작성하기 전에 어떤 절차로 어떤 함수를 사용할지 생각하면서 정리하자
절차 | 기능 | dplyr함수 |
1 | 회사별로 분리 | group_by() |
2 | suv 추출 | filter() |
3 | 통합 연비 변수 생성 | mutate() |
4 | 통합 연비 평균 산출 | summarise() |
5 | 내림차순 정렬 | arrange() |
6 | 1~5위까지 출력 | head() |
06-7 데이터 합치기
#가로로 합치기
1. 학생 다섯명이 중간, 기말고사를 봤다고 가정한 후 2개의 데이터 프레임 만들기
2. dplyr패키지의 left_join() 을 이용하여 가로로 합치기(by로 기준 삼을 변수명 지정)
#다른 데이터를 활용해 변수 추가하기
1. exam 데이터 분석 중 반별 담임교사 명단을 얻었다고 가정하자
2. name 은 class 와 teacher 두 변수로 구성, class 변수를 기준으로 name 의 teacher 변수를 exam 에 추가하기
#세로로 합치기
1. 학생 5명이 먼저 시험 보고 다섯명이 따로 시험을 봤다고 가정하자
2. bind_rows() 를 이용해 세로로 합치기
* 변수명이 다를 경우: rename() 으로 맞춰준 후에 합치기
출처: 김영우, "쉽게 배우는 R 데이터 분석", 이지스퍼블리싱, 2017년, 125-159쪽