데이터분석/R

R # 데이터 가공 (4)

하연01 2021. 1. 28. 23:25

" 쉽게 배우는 R 데이터 분석 " 을 교재로 하여 공부하는 과정을 작성한 글입니다." (일개 대학생입니다.)

 

이전 " 데이터 가공 (3) "  에서는 필요한 데이터를 열 기준으로 추출하는 방법을 select를 통해서 배웠다. 

 

앞에 배웠던 것들을 다시 한번 복습하는 시간을 가져야 할 것 같다는 생각이 드는 한때 ! 

 

더 배워야 할 것들이 많이 남지는 않았기 때문에

 

꾸준히 진도를 나가보도록 하겠다! 

 

 

# 값 정렬하기 

⇒ arrange() 

 

아무렇게나 쓰여져 있는 데이터들을 큰 값 혹은 작은 값부터 정리해서 편하게 보고싶다면? 

 

오름차순, 내림차순으로 값을 정렬하자! 

 

 

exam %>% arrange(math) 

⇒ id, class, 시험점수가 들어있는 데이터에서 수학점수를 기준으로 오름차순 정렬하자 

흠, 난 높은 점수부터 보고싶은걸? 

 

 

exam %>% arrange(desc(math)) 

⇒ 수학점수를 기준으로 내림차순 정렬하자

위의 두 결과 중 class 열을 살펴보면, 2,5,2,5,5 같이 정리되어 있지 않음을 볼 수 있다. 

만약 난 반 별로 높은 점수 혹은 낮은 점수부터 살펴보고 싶다면, 어떻게 해야할까?

⇒ 

exam %>% arrange(class, math) 

반 별로 정리해놓고, 그 안에서 수학점수를 오름차순으로 정리한다. 

 

데이터를 정렬하는 것은 arrange 하나로 간단하게 해결 가능하다! 

 

그럼 정리하는 의미에서 예제 문제를 풀어보자! 

 

 

내가 관심있어하는 mpg 데이터를 가지고 예제를 풀어보자!

 

 

Q. "audi"에서 생산한 자동차 중 어떤 모델의 hwy가 높은지 알아보려 함. "audi"에서 생산한 자동차 중 hwy가 1~5위에 해당하는 자동차의 데이터를 출력해보자 .

 

⇒ 먼저 첫번째, 아우디의 데이터만 뽑아서 "audi"에 저장해두고, 두번째, 그 중에서 고속도로연비를 순서대로 뽑으면 된다. 

1. 

audi <- mpg %>% filter(manufacturer=="audi")

 

2. 

View(audi %>% arrange(desc(highway)) %>% head(5))

 

첫번째 코드에서는 audi 데이터만 뽑아서 저장하는 과정이고 

 

두번째 코드에서는 보기 쉽게 표로 뽑기 위해 맨 처음에 View를 쓰고, audi의 highway(hwy, 고속도로연비)를 높은 순서대로 정렬하기 위해 arrange(desc())를 써주고 1~5위를 보기 위해 head(5)까지 추가해서 코드를 마무리했다. 

가장 우측의 highway를 보면 가장 높은 연비가 31, 가장 낮은 연비가 28이다. 

고속도로연비가 높은 차량 모델은 아우디의 a4임을 알 수 있다. 

(Q).  4는 사륜구동, f는 전륜구동, r은 후륜구동인데 연비가 좋은 차량의 1위부터 4위는 전륜구동이던데,,, 그럼 전륜구동은 다 연비가 좋을까? 

 

 

# 파생변수 추가하기 

⇒ mutate()

 

이전에 변수를 직접 지정해서 데이터프레임에 파생변수를 추가하는 방식을 배웠었다. 

⇒ df$새변수 <- df$변수1 + df$변수2

그런데 이번엔 함수로 파생변수를 추가하는 방법을 배워보자!

 

Q. 그럼 dplyr 방식과 mutate는 무엇이 다를까?

- dplyr는 매번 df을 지정해주어야한다. 하지만 mutate는 앞에서 한번 지정해주면 괄호 안에서는 지정해주지 않고 변수명만 써도 된다. 

 

시험점수 데이터에서 점수들의 합을 파생변수로 넣어볼까? 그리고 총합점수가 낮은 사람의 정보부터 보여주도록 하자! 

exam %>% mutate(total=english+math+science) %>% arrange(total) %>% head

가장 총합점수가 낮은 학생은 3반의 학생이다. 

 

그렇담 이번에도 복습을 위해 예제를 풀어볼까?

Q. mpg데이터 중 city, highway 연비의 평균인 평균연비 변수를 만들고 그 값이 높은 순으로 3위까지 추출해보자. 

 

mpg %>% mutate(total=(city+highway)/2) %>% arrange(desc(total)) %>% head(3)

아랫줄 가장 오른쪽에 total이라는 파생변수가 생겼고, 내림차순으로 정렬된 결과가 보여져 있다. 

차량 종류는 모두 폭스바겐이다.

" 폭스바겐 " 은 도시연비와 고속도로연비가 모두 높은 축에 속한다. 

 

wow 

 

오늘 배운 것들 모두 써보는 실습이 끝났다 !! 

 

R에서는 %>% 이 기호가 가장 많이 쓰이는 듯 하다.

지금까지 계속 데이터를 가공하고 필요한 정보를 추출하는 방법을 배웠는데 계속 꾸준히 하다보니 이해도가 늘고

새로운 것을 배울 때 거부감이 점점 없어지는 듯 하다.

지금 공부하는 방식대로 파이썬으로 하는 데이터 분석도 배워볼까 한다.