R

[R 프로그램] 기초부터 다지기-데이터 전처리(2)_데이터 정렬, 요약, 통합하기

Yeenn 2021. 11. 7. 16:05
728x90

데이터 전처리에 필요한 dplyr 패키지 내장 함수

 

dplyr 함수 기능
filter() 행 추출
select() 열(변수) 추출
arrange() 정렬
mutate() 변수 추가
summarise() 통계치 산출
group by() 집단별로 나누기
left_join() 데이터 합치기(열)
bind_rows() 데이터 합치기(행)

 

 

 

 

순서대로 정렬하기 (오름차순, 내림차순)

 

 

 

 

먼저 dplyr 패키지를 불러온 후, exam 데이터를 csv형태로 읽어주었다.

 

데이터 정렬은 arrange() 를 이용하여 해결할 수 있다.

 

 

[오름차순]

 

 

exam %>% arrange(math)를 입력해주면, 기존의 id변수 순으로 정렬되어있던 데이터가 수학점수가 낮은 사람에서 높은 사람 순으로 오름차순 정렬되어 출력된다.

 

 

[내림차순]

 

 

arrange()는 오름차순이 디폴트 값이기 때문에, 내림차순으로 정렬하기 위해서는 arrange에 할당할 기준 변수를 desc()에 적용하면 된다.

 

위와 같이 exam %>% arrange(desc(math))를 입력한 결과, 이번에는 math가 높은 사람부터 낮은 사람 순으로 출력되었다.

 

 

 

 

파생변수 추가하기 

 

mutate()를 사용하면 파생변수를 만들어 기존 변수에 추가할 수 있다. 

mutate(변수명 = 파생 변수 만들 공식)

 

 

 

수학, 영어, 과학 점수가 합쳐진 total 변수가 새로 생성된 것을 알 수 있다. 

 

 

여러 파생 변수를 한 번에 추가하기 위해서는

mutate(파생변수1 = 공식, 파생변수2 = 공식) 등으로 나열해주면 된다. 

 

 

 

 

 

조건문이 추가된 파생변수 추가하기 

 

mutate() 에 ifesle() 를 적용하면 조건에 따라 다른 값을 부여한 변수를 추가할 수 있다.

 

 

과학 점수가 60점 이상이면 "pass" 값을, 그렇지 않으면 "fail" 값을 출력하는 코드를 작성하였다.

 

 

*dplyr 패키지의 장점은 데이터 프레임명을 반복하여 입력하지 않아도 된다는 점이다.

 

[dplyr 패키지 사용]

데이터 %>%

mutate(파생변수 = 공식) 

 

vs

 

[dplyr 패키지 미사용]

데이터$파생변수 <- 데이터$변수 +/-x 데이터$변수...

 

 

 

 

집단별로 요약하기_summarise(), group_by()

 

집단별 평균이나 집단별 빈도처럼 각 집단을 요약한 값을 구할 때는 group_by() 와 summarise()를 사용한다.

 

[summarise]

 

 

위 코드는 수학 점수의 평균을 구한 후, mean_math 라는 새 변수에 할당하여 출력값을 나타내는 코드이다.

변수명은 mutate()를 사용할 때와 같이 임의로 정할 수 있다. 

 

 

[group by]

 

group_by()에 변수를 지정하면 변수 항목별로 데이터를 분리한다.

여기에 summarise()를 조합하면, 집단별 요약 통계량을 산출할 수 있다.

 

 

먼저, class별로 데이터를 분리한 후, 수학점수의 평균을 산출하였다. 

*<int>: 정수(integar) / <dbl>: 소수점이 있는 숫자(double, 부동 소수점)

 

 

 

summarise()도 mutate() 처럼 여러 요약통계량을 한번에 산출할 수도 있다. (',' 로 나열하면 된다.)

 

 

* n() 는 데이터가 몇 행으로 이루어져 있는지 그 '빈도'를 구하는 기능을 한다. n()은 특정 변수에 적용하는 것이 아니라, 행 개수를 세는 것이기 때문에 다른 함수와 달리 괄호 안에 변수명을 입력하지 않는다. 

 

 

 

 

 

데이터 합치기

 

[가로로 합치기-left join]

 

먼저, 5명의 학생의 중간고사, 기말고사 데이터를 생성해주었다.

 

 

 

left_join() 을 이용하면 데이터를 가로로 합칠 수 있다.

괄호 안에 합칠 데이터 프레임명을 나열하고, 기준으로 삼을 변수명을 by에 지정하면 된다. 

이 때, by에 지정되는 변수명에 " " 를 입력해주어야 한다.

 

 

 

left_join()을 응용하면 특정 변수의 값을 기준으로 다른 데이터 값을 추가할 수 있다. 

 

1. 각 반 학생들의 시험 점수를 담은 exam 데이터를 분석하고 있는데, 추가로 반별 담임교사 명단을 얻었다고 가정해보겠다.

 

2. name은 class와 teacher 두 변수로 구성되어 있다. class 변수를 기준으로 삼아 name의 teaher 변수를 exam에 추가해보겠다.

 

 

[세로로 합치기-bind_rows]

 

먼저, 학생 5명이 먼저 시험을 보고, 나중에 5명이 따로 시험을 봤다고 가정하고 2개의 데이터프레임을 생성했다, 

 

학생 1-5: group_a

학생 6-10: group_b

 

 

 

bind_rows()를 이용하면 데이터를 세로로 합칠 수 있다. 

새 변수 <- bind_rows(df1, df2)

 

 

* 데이터를 합칠 때에는 두 데이터의 변수명이 같아야 한다. group_a 와 group_b 는 변수명이 id와 test로 동일하기 때문에 세로로 합칠 수 있었지만, 만약 변수명이 다른 데이터프레임을 합치려면 rename()을 이용해 동일하게 변수명을 맞춘 후에 결합해주어야 한다. 

 

 

 

 

 

※ 위 포스팅은 「Do it! 쉽게 배우는 R 데이터 분석(이지스리퍼블리싱)」 도서를 바탕으로 작성되었습니다.

728x90