본문 바로가기
R

[R.아르] 특정 조건을 만족하는 행의 개수 구하기

by LightBlogger 2016. 9. 5.

아래와 같은 x에서 var의 값이 60을 넘는 행의 개수는 몇 개일까?



2016/09/05 - [R] - [R.아르] 특정 조건을 만족하는 행만 추출하기 에서 논의한 대로 다음과 같이 뽑으면 될 것이다.


총 5개 행이다. 


데이터가 많아지면 직접 셀 수는 없고, 이럴 때 행의 개수를 세어 주는 함수는 nrow()



쨘!


근데 추출이 조금 번거롭다.


조건을 만족하는 행의 개수만 한 번에 셀 수도 있지 않을까? 



물론이다. 그냥 y대신 x[x$var>=60,] 를 쓰면 된다.


하지만 개인적으로는 아래의 코드가 훨씬 직관적이고 기억하기 쉽다고 생각하는 바,



오?


왠지 x$var >= 60 에 해당하는 것들의 길이(?) 라고 자연스럽게 읽힌다.


which()는 괄호 안의 조건에 해당하는 데이터가 어디어디에 있는지 그 위치를 알려주는 함수다.



x$var 라는 데이터에서 60이상 되는 것들은 3번째, 4번째, 6번째, 7번째, 그리고 8번째에 위치한다는 의미다.


그러면서 which(x$var>=60) 은 그 자신이 (3, 4, 6, 7, 8)로 이루어진 벡터가 된다. 


length()는 이렇게 한 줄로 된 벡터에 데이터가 총 몇 개인지 알려주는 함수다. 


두 함수를 조합하면 좀 더 직관적으로 여러가지 수를 파악할 수 있다.


a의 개수는 몇개인가? length(which(x$name=="a"))



값이 50이거나 60인 자료는 몇 개인가? length(which(x$var==50 | x$var==60))



which() 중간의 | 기호는 'or'를 의미하는 기호다. and는 '&'를 쓴다.








반응형

댓글