이번에는 select()함수에 대해 알아 보자. select()함수는 데이터 프레임 내에서 일부 변수만 사용하고자 하는 경우에 사용한다. select함수 사용법을 코드로 살펴보자. 이 포스트에서도 필자는 filter()포스팅에서 사용하였던 자료와 동일한 자료를 이용하여 진행하였다.
우선 select()함수는 dplyr 패키지에 있기 때문에 dplyr패키지를 호출하고 나서 예시 데이터 프레임을 생성하자.
예시에서 사용하는 데이터 프레임의 내용은 다음과 같습니다.
만약 필자가 수학 점수에 대한것만 출력하고 싶다고 하자. select()함수의 매개변수로는 '변수명' 이 들어간다. 코드는 다음과 같이 작성해 주면 된다.
해당 코드를 출력해보면 다음과 같이 math변수에 대한 데이터 값만 나오는것을 볼 수 있다. 이와 동일한 방법으로 영어 점수만 출력해 본다고 가정하고 코드를 입력해 보자.
이를 응용해서 여러개의 변수의 데이터를 출력할 수 도 있다. 이번에는 영어, 수학, 과학의 데이터를 모두 출력한다고 가정을 해보자. 이런 경우에는 select의 매개변수에는 변수명들을 작성해주면 되는데, 이 변수명을 구분해 주기위해 변수 사이사이 쉼표를 넣어준다.
이번에는 만약 변수가 되게 많은, 한 100개의 변수가 존재하는 데이터가 있다고 가정해 보자. 이 데이터에서 만약 단지 40,50번째 데이터만 제외하고 모두 출력하고 싶다고 한다면, 두 가지 변수 제외하고 나머지 변수들의 이름을 모두 적어야 하는건가? 그렇게 되면 매우 불편할 것이다. 이렇게 전체 데이터에서 특정 변수만 제외하고 싶을때는 제외하고자 하는 변수 명 앞에 '-'(빼기 연산자)를 붙여서 넣어주면 된다.
해당 에시에서는 select()함수에 매개변수로 -math, -english, 즉 math와 english변수에 대한 값을 제외하고 출력하겠다는 코드를 작성하고 실행해 주었다. 동일한 방법으로 이번에는 과학 점수만 제외하고 출력해 보자.
파이프 연산자(%>%)는 dplyr패키지의 함수들을 조합할때 사용된다고 하였다. 그렇다면 이 파이프 연산자를 이용해서 filter()함수와 select()함수를 조합해보자. 예를 들어서 2반에서(조건 1) 영어 점수를 제외한 데이터를 출력한다(조건 2)라고 가정해 보자. 그러면 코드는 다음과 같이 작성해 주면 된다.
우선 test %>% filter(class == 2)를 통해 조건 1인 2반 학생들에 대한 데이터를 추출한다. 그 다음 %>% select(-english)를 통해서 조건 2인 영어점수에 해당하는 변수를 제외하고 난 나머지 데이터를 출력하는것을 볼 수 있다.
R의 dplyr패키지의 파이프 연산자는 dplyr패키지의 함수들을 조합할 때 사용하는데, 이러한 성질 덕분에 코드의 가독성 또한 높일 수 있다. 파이프 연산자 코드로 연결되는 부분에서 enter를 통해 줄바꿈을 해주면 코드의 가독성이 높아진다.
(해당 코드의 출력은 위의 결과값과 동일하다)
줄바꿈을 해주게 되면 함수별(filter, select별)로 구분이 되기 떄문에 가독성이 더 높아진다. 줄바꿈을 하면 알아서 들여쓰기(공백 4칸에 해당, alt키)가 실행되어 dplyr코드가 어디까지 이루어 져있는지 구분하기도 쉬워진다. 이렇게 가독성이 높아진거의 주의할 점이라면 dplyr 코드부분에 대해서는 한번에 실행시켜 주어야 한다는 것이다. 여기서 만약 일부 데이터만 따로 출력하고 싶다면 head()나 tail()과 같은 함수를 dplyr 코드와 결합해서 사용할 수 도 있다.
1 . head와 dplyr코드의 결합
2 . tail과 dplyr코드의 결합
'DataAnalysis > R' 카테고리의 다른 글
arrange()함수를 이용한 분석 예제 (0) | 2019.03.02 |
---|---|
데이터 전처리하기(Data Processing) - arrange() (0) | 2019.03.02 |
R에서 사용하는 연산자들 (0) | 2019.02.23 |
데이터 전처리하기(Data - Processing) - filter() (1) | 2019.02.23 |
Derived Variable (0) | 2019.02.04 |