경우에 따라서 주어진 데이터에서 추가적인 데이터를 추가하여 새로운 데이터를 생성하고, 그 데이터로 분석을 하는 경우가 생길 수 도 있다. 예를 들면 학교에서 각반의 시험 데이터를 모아서 합친 후 데이터를 분석한다는 등을 예시로 들 수 있다. 데이터를 합치는데 있어서 두가지 경우로 또 나눌 수 있다.
1 . 같은 변수의 데이터를 가진 데이터를 합치는 경우(세로로 합치는 경우)
2 . 새로운 변수의 데이터를 가진 데이터를 합치는 경우(가로로 합치는 경우)
간단히 말해서 가로로 합치기, 세로로 합치기라고 하자. 가로로 합칠때는 left_join()이라는 함수를 이용하고 세로로 합치는 경우에는 bind_rows()라는 함수를 이용한다. 이 두 함수 또한 데이터를 전처리하는 경우에 사용하는 함수들이기 때문에 dplyr패키지 안에 내장되어있다. 동일하게 우선 dplyr패키지를 호출해 주자.
1 . 가로로 합치기
우선 두가지의 데이터 프레임을 생성해 보자.
a라는데이터 프레임에는 중간고사를 의미하는 변수인 midterm변수가 들어간 데이터 프레임을, b라는 데이터 프레임에는 기말고사를 의미하는 변수인 final변수가 들어간 데이터 프레임을 만들었다. 대신 두 데이터 프레임에서 공통적인 id라는 이름의 변수가 있다. 이 변수는 두개의 데이터 프레임을 합치는 기준 변수가 되어준다. 그럼 이제 a,b데이터 프레임을 합쳐보자. a,b는 서로 다른 변수값을 가진 데이터를 합치는 것이므로 가로로 합치는 것이다. 즉 여기서는 left_join()함수를 사용해야 한다.
left_join()함수의 매개변수를 보면 우선적으로 서로 합칠 데이터 프레임이 저장된 변수 명을 넣어준 다음 by매개변수 값에는 합쳐질 기준 변수의 변수명을 넣어주면 된다. 이번에는 지금 위에서 완성된 total이라는 데이터 프레임에서 각 id의 이름의 성씨를 넣어본다고 가정하자. 이번에도 위에서 했던 방법과 동일하다. 당연히 left_join()매개변수에 합칠 데이터 변수 명으로는 total과 성씨가 저장된 데이터 프레임 변수의 변수명을 넣어주면 된다. 또 당연히 합치는 기준 변수명을 by의 값에 넣어주면 된다.
total_n의 값을 출력해 보면 다음과 같다.
위의 total값과 비교해보면 합칠 때 사용한 c변수 안에있는 name이라는 변수의 값이 최종 데이터 프레임이 저장된 total_n 변수에 저장된것을 볼 수 있다.
2 . 세로로 합치기
이번에는 반대로 세로로 합치기를 살펴보자. 세로로 합치기는 앞에서도 말했듯이 동일한 변수에 대한 값을 가지고 있는 데이터들을 합치는것이 대부분의 경우이다. 이번에도 동일하게 두개의 데이터 프레임을 생성하자.
두 데이터 프레임을 살펴보면 동일한 id라는 변수와 score이라는 변수를 가지고 있다. 결론적으로 c와 d는 동일한 변수 score와 id의 값을 서로 합치겠다는 말이 되는데 이의 형태는 다음과 같다고 말할 수 있다.
세로로 합칠때는 bind_rows()라는 함수를 이용한다. 세로로 합칠때는 기준이 될 변수 필요없이 동일한 변수끼리 데이터를 합치면 되므로 left_join()의 by매개변수와 같이 기준 변수를 입력해주는 매개변수가 필요하지 않다.
혹시라도 두 데이터 프레임의 데이터를 합하고 싶은데 변수 명이 다를 경우 left_join()함수, bind_rows()함수 모두 dplyr패키지를 선언하기에 내장 함수인 rename()함수를 이용해서 변수명을 통일해준 후에 사용해 주면 된다.
rename()함수의 기본 문법 : rename((데이터프레임명), (바꿀 변수명) = (기존 변수명))
'DataAnalysis > R' 카테고리의 다른 글
데이터 전처리 Analysis Challenge (0) | 2019.03.04 |
---|---|
R - StringAsFactor 이 무엇인가? (0) | 2019.03.04 |
데이터 전처리하기(Data Process) - summaries(), group_by() (0) | 2019.03.03 |
mutate()함수를 이용한 분석 예제 (0) | 2019.03.03 |
데이터 전처리하기(Data Processing) - mutate() (0) | 2019.03.03 |