안녕하세요!
설날이 다 지나갔습니다! 사실 마지막날~ 3시간 남았습니다!
잘 놀다 왔으니 다시 시작기 시작하겠습니다!
우리가 데이터 분석을 하려면 데이터를 자유자재로 다룰 수 있어야 합니다! 여러 가지 상황에 대비하여 일부를 추출하거나, 종류별로 나누거나, 여러 데이터를 합치는 등 연속적으로 작성해보겠습니다!
먼저, 데이터 가공에 앞서 지난 분석기에 짧게 언급했던 데이터 전처리 작업에 가장 많이 사용되는 패키지인 dplyr 함수를 설명하겠습니다!
dplyr 함수 | 기능 |
filter() | 행 추출 |
select() | 열(변수) 추출 |
arrange() | 정렬 |
mutate() | 변수 추가 |
summarise() | 통계치 산출 |
group_by() | 집단별로 나누기 |
left_join() | 데이터 합치기(열) |
bind_rows() | 데이터 합치기(행) |
이렇게 8가지의 함수를 주로 다룰 예정이며, 차근차근 진행해보겠습니다. (저는 아직도 헷갈리는 것 같습니다,,)
그리고, dplyr 패키지에 내재된 함수들은 %>%라는 pipe operator(파이프 연산자)를 사용하여 연결하고, pipe처럼 함수들을 연결시켜주는 느낌이라고 하네요 ㅎㅎ (이상해요 아무리 생각해도) 단축키는 (Ctrl + Shift + M)
#1 조건에 맞는 데이터만 추출하기(filter)
데이터를 분석할 때는 전체 데이터를 사용하기도 하지만, 일부를 추출해 분석하기도 합니다! filter의 경우 행을 추출하는 함수로서, 행=사람의 정보 한 사람의 정보를 다 추출하게 되겠죠?
제가 했던 것들을 보겠습니다!
위의 이미지는 이번에 사용하게될 exam data입니다! 20명의 정보가 있고, 각각의 id, 반, 수학/영어/과학 점수가 포함되어있네요!
이는 class == 1인 경우의 자료들만 추출하게 하는 코드입니다! 이때 우리가 흔히 하는 등호가 한 번(=)이 아닌 등호가 두 번(==) 입력해야 됩니다! 한 번 입력하는 경우는 파라미터를 지정할 때! 잘 알아둡시다!
이와 반대로, 1반이 아닌 경우만 출력하고 싶다면, ==가 아닌 !=를 입력해주면 됩니다.
1반 학생이 4명이었으니, 나머지는 총 16명 제대로 추출된 것을 확인할 수 있습니다! 이를 활용하여, 2반인 학생, 3반이 아닌 학생 등 여러 경우로 활용할 수 있습니다!
다음은, 같다는 조건이 아닌 초과, 미만, 이상, 이하 등의 조건을 걸어보도록 하겠습니다!
이때 초과(>), 미만(<), 이상(=>), 이하(<=)로 표시하면 됩니다.
이는 너무 단순해서 한 가지만 보고 넘어가겠습니다!
만약, 두 가지 경우를 모두 충족하는 경우도 얻고 싶을 수가 있겠죠? 그럴 때는 또 다른 방법이 존재합니다!
and를 의미하는 & 기호를 사용하거나, or을 의미하는 | 기호를 사용할 수 있습니다. (| 기호의 경우 shift와 ₩를 같이 누르면 됩니다! a.k.a. vertical bar)
이렇게, 1반이면서 수학 점수가 50점 이상인 학생을 추출할 수 있으며,
두 조건을 모두 만족하는 것이 아닌, 수학 점수가 90점 이상이거나 영어 점수가 90점 이상인, 한 가지 조건만을 만족해도 추출할 수 있는 코드입니다.
이와 유사하게, 변수의 값이 지정한 목록에 해당될 경우만 추출해야 할 경우가 있습니다. 점수가 아닌 반이 1반 혹은 3반 혹은 5반인 경우에만 추출될 수 있도록 말이죠! 이런 경우에도 똑같이 vertical bar를 사용하여 나열해주면 된답니다!
하지만, 이러한 경우에 vertical bar를 사용하게 되면 코드도 매우 길어져서 보는데도 불편하고 오류가 날 확률도 증가하게 됩니다. 이를 보완할 수 있는 %in%(Matching Operator, 매치 연산자)를 활용하여 변수의 값이 지정한 조건 목록에 해당하는지 확인하는 기능을 하게 됩니다.
같은 결과를 얻은 것을 확인할 수 있었습니다! 코드를 해석해보면, exam에서 class가 1, 3, 5가 맞는지 확인하라! 라는 해석을 개인적으로 했습니다! 이렇게 알아가야 실수가 적어지더라구요!
이러한 행 추출을 이용하여 1반 혹은 2반의 전체 데이터를 추출하고, 데이터 프레임 내부 데이터를 지정하는 $ 기호를 활용하여 평균, 중간값, 최댓값 등 쉽게 파악할 수 있습니다!
이번 시간엔 행 추출을 하는 filter 함수에 대해 알아보았습니다!
다음 시간에는 필요한 변수만을 추출하는 즉, 열을 추출하는 select 함수에 대해 알아보겠습니다!
감사합니다!
'R' 카테고리의 다른 글
데이터 분석 시작기-9 (데이터 전처리 - 파생변수 추가하기;mutate) (0) | 2023.01.29 |
---|---|
데이터 분석 시작기-8 (데이터 전처리 - 변수 추출 및 정렬;select, arrange) (0) | 2023.01.24 |
데이터 분석 시작기-6 (변수명 바꾸기 & 파생변수 만들기 w/ dplyr) (0) | 2023.01.18 |
데이터 분석 시작기-5 (데이터 파악 및 수정) (0) | 2023.01.18 |
데이터 분석 시작기-4 (데이터 프레임 이해하기) (0) | 2023.01.17 |