which
조건문을 통한 인덱싱(링크)으로 벡터에서 조건을 만족하는 데이터에 대해서는 TRUE 로, 조건을 만족하지 않는 데이터에 대해서는 FALSE 로 변환하여 새로운 벡터를 만들어내고, 이를 통해 다시 조건을 만족하는 값을 벡터에서 뽑아낼 수 있었다.
which 함수를 이용해서도 비슷한 일을 할 수 있다. which 함수는 해당 데이터 셋에서 조건에 맞는 인덱스를 반환해주는 함수이다. 기본 문법은 아래와 같다.
which(data_and_condition)
예를 들어서 1 부터 10 까지 아래와 같이 무작위로 있는 벡터에서 5 이상인 값의 인덱스만 알고 싶다면 아래와 같이 which 를 사용할 수 있다.
data <- c(1, 6, 2, 8, 3, 4, 9, 7, 5, 10)
which(data >= 5)
벡터가 아니라 매트릭스나 데이터프레임에 적용하여 조건에 만족하는 행의 인덱스를 추출할 수도 있다.
data <- data.frame(c(1, 6, 2, 8, 3, 4, 9, 7, 5, 10))
which(data[1] >= 5)
기타
which.min 을 통해 해당 데이터 속 최솟값을 가지는 인덱스를 찾을 수도 있고, which.max 를 통해 최댓값의 인덱스를 찾을 수도 있다. 이때 최솟값이나 최댓값이 여러개라면 모든 인덱스를 반환한다.
만약 매트릭스나 데이터프레임에서 특정 조건을 만족하는 데이터의 행과 열의 위치를 찾고 싶다면, arr.ind 매개변수를 조정해주면 된다.
which(data_and_condition, arr.ind=TRUE)
예를 들어 iris 데이터 셋에서 7 이상의 값을 추출해보려면 다음과 같이 이용할 수 있다.
which(iris[, 1:4] >= 7, arr.ind=TRUE)
출력은 다음과 같다.
row col
[1,] 51 1
[2,] 103 1
[3,] 106 1
[4,] 108 1
[5,] 110 1
[6,] 118 1
[7,] 119 1
[8,] 123 1
[9,] 126 1
[10,] 130 1
[11,] 131 1
[12,] 132 1
[13,] 136 1
'Language > R' 카테고리의 다른 글
[R] 다중변수 탐색적 자료 분석(EDA) (0) | 2024.10.28 |
---|---|
[R] 단일변수 탐색적 자료 분석(EDA) (0) | 2024.10.28 |
[R] for 와 while 을 통한 반복문 및 apply (0) | 2024.10.27 |
[R] 데이터 파일과 사용자 정의 함수 및 변수 불러오기 (0) | 2024.10.14 |
[R] 다양한 자료형(data type)과 인덱싱(indexing) (0) | 2024.10.14 |