아래와 같은 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는 '&'를 쓴다.
'R' 카테고리의 다른 글
[R. 아르] 리스트에 없는 항목만 추출하기 (차집합, setdiff()) (0) | 2016.09.23 |
---|---|
[R. 아르] 내용 합치기 paste() (0) | 2016.09.22 |
[R.아르] 중복된 행 삭제하기 unique() / duplicated() (0) | 2016.09.12 |
[R.아르] 중복된 값의 개수 세기(엑셀의 countif) (1) | 2016.09.09 |
[R.아르] R에서 엑셀의 vlookup() 기능 사용하기 (0) | 2016.09.08 |
[R.아르] 특정 조건에 맞는 글자(이메일 주소)만 추출하기 (1) | 2016.09.06 |
[R.아르] 특정 조건을 만족하는 행만 추출하기 (22) | 2016.09.05 |
[R.아르] 글자 수 세기 nchar() (0) | 2016.09.02 |
[R.아르] R 행,열 삭제 (0) | 2016.08.30 |
[R.아르] R 행,열 추가 (1) | 2016.08.30 |
댓글