데이터 분석을 하다보면 잣니이 원하는 데이터가 벡터나 매트릯, 데이터 프레임안에서 어디에 위치하고 있는지를 알기 원하는 때가 있다.
예를들어, 50명의 학생 성적이 저장된 벡터가 있는데 가장 성적이 좋은 학생은 몇번째에 있는지를 알고싶은 경우
이런 경우 편리하게 사용할 수 있는 함수가 which(), which.max(), which.min() 함수이다.
score <- c(76, 84, 69, 50, 95, 60, 82, 71, 88, 84)
which(score==69) # 성적이 69인 학생은 몇 번째에 있나
which(score>=85) # 성적이 85 이상인 학생은 몇 번째에 있나
max(score) # 최고 점수는 몇 점인가
which.max(score) # 최고 점수는 몇 번째에 있나
min(score) # 최저 점수는 몇 점인가
which.min(score) # 최저 점수는 몇 번째에 있나
score <- c(76, 84, 69, 50, 95, 60, 82, 71, 88, 84)
idx <- which(score<=60) # 성적이 60 이하인 값들의 인덱스
score[idx] <- 61 # 성적이 60 이하인 값들은 61점으로 성적 상향 조정
score # 상향 조정된 성적 확인
idx <- which(score>=80) # 성적이 80 이상인 값들의 인덱스
score.high <- score[idx] # 성적이 80 이상인 값들만 추출하여 저장
score.high # score.high의 내용 확인
idx <- which(iris$Petal.Length>5.0) # 꽃잎의 길이가 5.0 이상인 값들의 인덱스
idx
iris.big <- iris[idx,] # 인덱스에 해당하는 값만 추출하여 저장
iris.big
# 1~4열의 값 중 5보다 큰 값의 행과 열의 위치
idx <- which(iris[,1:4]>5.0, arr.ind =TRUE)
idx
This post was written based on what I read and studied the book below.
댓글