반전공자

R # 데이터 가공 (5) 본문

데이터분석/R

R # 데이터 가공 (5)

하연01 2021. 2. 7. 22:56

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

 

 

# 데이터 합치기 

 

내가 가지고 있는 데이터 중 합쳐서 하나의 데이터로 저장해놓아야 분석에 용이할 경우가 분명 존재할텐데, 

 

그렇다면 두개의 자료를 합치는 방법은 무엇이 있을까?

 

- 가로로 합치기 

: 열이 많아진다고 생각하면 된다. 

 

만약 중간고사 점수 자료와 기말고사 점수 자료를 하나의 데이터로 합치려면?

test1 <- data.frame(id=c(1,2,3,4,5), midterm=c(60,80,70,90,85))

 

⇒ 

test2 <- data.frame(id=c(1,2,3,4,5), final=c(70,83,65,95,80))

 

 

이제 위의 두 데이터를 하나로 합쳐볼까? 

중간고사, 기말고사 자료이기 때문에 가로로 합쳐보자.

left.join(test1, test2, by="기준")

 

 

by에 기준을 정해주는 이유는?

만약 그냥 합친다면, id가 두번이나 반복될텐데 이를 방지해주기 위함.

⇒ 

total <- left.join(test1, test2, by="id")

 

기준인 id 가 왼쪽에 모여있음을 볼 수 있다! 

 

그럼 다른 데이터를 새로 만들고 이전의 exam과 또 합쳐보자. 

⇒ 

name <- data.frame(class=c(1,2,3,4,5), teacher=c("kim", "lee", "park", "choi", "jung"))

 

각 반의 담임선생님의 성을 넣은 데이터.

 

exam과 합쳐보자 

⇒ 

exam_new <- left.join(exam, name, by="class")

 

 

 

 

 

 

- 세로로 합치기

 

만약 같은 종류의 데이터인데 나누어져 있어 합치고 싶다면 같은 열에 해당하는 정보들일 것이기 때문에 세로로 합쳐야 마땅하다. 

 

실습을 위해 새로운 데이터를 만들어보자 

⇒ 

group_a <- data.frame(id=c(1,2,3,4,5), test=c(60,80,70,90,85))

⇒ 

group_b <- data.frame(id=c(6,7,8,9,10), test=c(70,83,65,95,80))

id가 1~10까지 있는데 1~5와 6~10으로 나누어져 있음을 알 수 있다.

이제 두 자료를 세로로 합쳐야 하는데,, 

필요한 함수는? 

 

bind.rows(group_a, group_b)
group_all <- bind.rows(group_a, group_b)

** 변수명이 다른 두 데이터일 경우 bind.rows가 불가능하다. 

 

 

 

 

 

 

# 개인 실습 

 

이 데이터를 만들고, 기존의 mpg에 가로로 합치기 

fuel <- data.frame(fl=c("c", "d", "e", "p", "r"),
             price_fl=c(2.35, 2.38, 2.11, 2.76, 2.22), stringsAsFactors=F)

 

 

 

stringsAsFactors=F 문장을 쓰는 이유는? 

기존의 mpg 데이터의 fl과 문자를 비교하여 기준을 잡고 합쳐야 하는데, data.frame은 입력 시 문자가 들어올 경우 자동으로 factor 타입이 되기때문에, 이를 방지해주기 위해서 작성한다. 

 

이제 합쳐보자. 

⇒ 

new_207 <- left.join(mpg, fuel, by="fl") 

 

new_207이라는 변수 안에 합친 데이터를 넣자.

 

 

기존 mpg 안에 fl 이라는 열이 존재하기 때문에 기준으로 fl을 잡는 것이 가능하다. 

잘 합쳐졌는지 확인을 위해 head를 사용하여 확인하자 (6번째 줄 까지 볼 수 있음)

 

⇒ 

new_207 %>% select(model, fl, price_fl) %>% he

ad

* select는 열 선택 함수 

 

 

 

 

 

 

 

오늘로써 데이터 가공에 대한 이론은 모두 배웠고, 실습도 해보았다! 

 

다음 시간부터는 "데이터 정제"에 대해서 배우는 시간을 가지도록 하겠당 

배울수록 할 수 있는 것들이 많아지면서 크게 어렵지도 않고, 재밌어지는 것 같다! 

'데이터분석 > R' 카테고리의 다른 글

R # 데이터 정제 (2)  (0) 2021.02.23
R # 데이터 정제 (1)  (0) 2021.02.19
R # 데이터 가공 (4)  (0) 2021.01.28
R # 데이터 가공 (3) 분석실습  (0) 2021.01.26
R # 데이터 가공 (2)  (0) 2021.01.26