R 에서 조건부로 데이터 필터링하는 법

R 에서 조건부로 데이터 필터링하는 법

Conditionally data filtering in r

개요

R 이 주로 통계학에서 쓰이기 때문인지, 필요한 데이터를 골라내고 편집하는 기능은 타의 추종을 불허한다. 이러한 데이터의 핸들링에 익숙해지는 것은 조금 어렵지만, 완벽하게 터득하고 나면 다른 언어가 너무나 불편할 것이다.

사실 이러한 팁들은 읽는 것만으로는 크게 도움이 되지 않는다. (실제로 정확성을 기하려다보니 설명도 간결할 수밖에 없다.) 많은 데이터를 다루고 여러가지 코드를 짜다보면 자연스럽게 숙달되는데, 그걸 회피하다보면 실력이 늘지 않는다. 아직 R 을 배우는 입장이라면 안 건드려도 될 데이터도 많이 다뤄보면서 직접 실습해보는 것을 추천한다.

예제

20180814\_151151.png

위와 같이 $10$ 부터 $1$ 까지 감소하는 배열이 있다고 할때, 논리 연산자를 통해서 참/거짓의 배열을 얻을 수 있다. 첫번재는 $5$ 이하의 숫자를 골라내고, 두번째는 짝수만 골라낸 것이다.

이러한 논리 배열을 이용하면 아주 간단하게 데이터를 골라낼 수 있다.

슬라이싱

20180814\_151201.png

슬라이싱을 할 때 같은 길이의 논리 배열을 넣는 것만으로 참은 남기고, 거짓은 버린 배열을 반환한다. 예시에선 앞쪽에 있던 숫자들이 잘려나간 것을 확인할 수 있다.

which() 함수

20180814\_151210.png

which() 함수는 논리 배열을 받아 인덱스의 배열로 반환한다. 예시에선 짝수에 해당하는 인덱스만 남은 것을 확인할 수 있다.

이것을 이용해서 다시 슬라이싱을 하면 원하는 데이터를 얻을 수가 있다.

코드

x<-10:1
 
x<=5
x%%2==0
 
x[x<=5]
which(x%%2==0)
댓글