0Pricing
R Academy · 강의

rank()로 값 순위 매기기

average, first, min, max, random 동률 처리 방식으로 순위를 지정합니다.

rank()로 값 순위 매기기은(는) CoddyKit의 무료 R Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 R Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. R Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

rank()가 반환하는 것

rank(x)는 벡터 값의 표본 순위를 반환합니다. 가장 작은 값에는 순위 1, 두 번째로 작은 값에는 순위 2가 부여되는 식입니다. order()와 달리 출력 길이는 입력과 같으며, 각 위치에 해당 값의 순위가 들어갑니다.

scores <- c(78, 92, 65, 88, 71)
ranks <- rank(scores)
print(scores)
print(ranks)

동률 처리: 평균 방식

값이 같아 동률이 발생하면 rank()는 ties.method 인수를 사용해 순위 부여 방식을 결정합니다. 기본값은 'average'이며, 동률인 요소에는 원래 차지했을 순위들의 평균이 부여됩니다.

x <- c(10, 20, 20, 30)
# Default: average of positions 2 and 3 = 2.5
rank(x)
rank(x, ties.method = 'average')

동률 처리 방식: first와 last

ties.method = 'first'는 벡터에서 먼저 나타나는 동률 요소에 더 낮은 순위를 부여합니다. 'last'는 반대로 동작하여 앞에 나온 요소에 더 높은 순위를 부여합니다.

x <- c(10, 20, 20, 30)
cat('first:', rank(x, ties.method = 'first'), '\n')
cat('last: ', rank(x, ties.method = 'last'),  '\n')

동률 처리 방식: min과 max

'min'은 동률인 모든 요소에 가능한 최소 순위를 부여합니다(스포츠에서 사용되는 방식으로, 두 선수가 공동 3위이면 둘 다 순위 3을 받고 아무도 순위 4를 받지 않습니다). 'max'는 동률인 모든 요소에 가능한 최대 순위를 부여합니다.

x <- c(10, 20, 20, 30)
cat('min:', rank(x, ties.method = 'min'), '\n')
cat('max:', rank(x, ties.method = 'max'), '\n')

동률 처리 방식: random

ties.method = 'random'은 동률인 요소들 사이에 서로 다른 순위를 무작위로 부여하여 동률을 해소합니다. 호출할 때마다 결과가 달라질 수 있습니다. 고유한 integer 순위가 필요하지만 동률 해소 순서는 중요하지 않을 때 유용합니다.

x <- c(10, 20, 20, 20, 30)
set.seed(42)
cat('random run 1:', rank(x, ties.method = 'random'), '\n')
set.seed(99)
cat('random run 2:', rank(x, ties.method = 'random'), '\n')

밀집 순위와 표준 순위 비교

R의 rank()는 표준 경쟁 순위(1, 2, 2, 4)를 생성합니다. 간격이 없는 밀집 순위(1, 2, 2, 3)를 얻으려면 고유한 값에 rank(x, ties.method = 'min')을 사용하거나 data.table 또는 dplyr 패키지를 사용하십시오. 다음은 base-R에서 사용할 수 있는 우회 방법입니다:

x <- c(10, 20, 20, 30)
# Standard ranking (gaps after ties)
cat('Standard:', rank(x, ties.method = 'min'), '\n')
# Dense ranking: rank of sorted unique values
dense <- match(x, sort(unique(x)))
cat('Dense:   ', dense, '\n')

rank() 대 order() 대 sort()

이 세 함수는 서로 관련되어 있지만 서로 다른 것을 반환합니다. sort(x)는 정렬된 값을 반환하고, order(x)는 벡터를 정렬하는 위치를 반환하며, rank(x)는 각 위치의 순위를 반환합니다. 다음은 세 함수를 나란히 비교한 내용입니다.

x <- c(30, 10, 50, 20, 40)
cat('x       :', x,        '\n')
cat('sort(x) :', sort(x),  '\n')
cat('order(x):', order(x), '\n')
cat('rank(x) :', rank(x),  '\n')

내림차순 순위 매기기

가장 큰 값부터 가장 작은 값 순으로 순위를 매기려면(순위 1 = 가장 높은 값), rank()에 전달하기 전에 벡터에 음수를 취합니다. 순위 1이 최상을 의미하는 순위표에서 사용하는 패턴입니다.

scores <- c(78, 92, 65, 88, 71)
desc_ranks <- rank(-scores)
cat('Scores:      ', scores,     '\n')
cat('Rank (best=1):', desc_ranks, '\n')

데이터 프레임에 순위 추가하기

데이터 프레임에 순위 열을 추가하는 작업은 흔히 수행합니다. ties.method = 'min'과 함께 rank()를 사용하고, 내림차순으로 만들려면 음수를 취하여 올바른 순위표를 구성합니다.

df <- data.frame(
  player = c('Alice', 'Bob', 'Carol', 'Dave'),
  score  = c(250, 400, 250, 375)
)
df$rank <- rank(-df$score, ties.method = 'min')
df[order(df$rank), ]

NA 값과 함께 사용하는 rank()

rank()에는 sort()와 order()와 마찬가지로 na.last 인수가 있습니다. 기본값은 'keep'이며, NA 값에는 NA 순위를 할당하고 NA가 아닌 요소들은 서로 간에 순위를 매깁니다.

x <- c(5, NA, 2, NA, 8, 1)
cat('na.last=keep:  ', rank(x, na.last = 'keep'), '\n')
cat('na.last=TRUE:  ', rank(x, na.last = TRUE),   '\n')
cat('na.last=FALSE: ', rank(x, na.last = FALSE),  '\n')

백분위 순위

순위를 전체 개수로 나누어 백분위로 변환합니다. 백분위 순위는 특정 요소 이하인 값이 전체에서 어느 정도의 비율을 차지하는지 나타냅니다. 통계와 교육 평가에서 유용합니다.

scores <- c(60, 75, 82, 91, 68, 77, 85, 95)
n <- length(scores)
pct_rank <- rank(scores) / n * 100
result <- data.frame(score = scores, percentile = round(pct_rank, 1))
result[order(result$score), ]

빠른 확인

동률인 모든 요소에 가능한 가장 낮은 동일 순위(예: 스포츠에서 두 선수가 공동 3위이고 4위는 없는 경우)를 부여하는 ties.method는 무엇입니까?

rank() 핵심 내용

rank()의 핵심 내용:

  • rank(x)는 각 요소의 순위를 반환합니다(입력과 길이가 같음).
  • 기본값 ties.method = 'average': 동률인 요소들은 순위의 평균을 공유합니다.
  • 'min' = 스포츠 방식(공동 최저 순위), 'max' = 공동 최고 순위
  • 'first'와 'last'는 나타난 순서에 따라 동률을 구분합니다.
  • 내림차순 순위에는 rank(-x)를 사용합니다(순위 1 = 가장 큰 값).
  • df$rank <- rank(-df$score, ties.method='min')으로 데이터 프레임에 순위 열을 추가합니다.
x <- c(10, 30, 20, 30, 10)
cat('average:', rank(x, ties.method = 'average'), '\n')
cat('min:    ', rank(x, ties.method = 'min'),     '\n')
cat('max:    ', rank(x, ties.method = 'max'),     '\n')
cat('first:  ', rank(x, ties.method = 'first'),   '\n')

자주 묻는 질문

“rank()로 값 순위 매기기” 강의는 무료인가요?

네 — “rank()로 값 순위 매기기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 R Academy 강의 전체를 잠금 해제할 수 있습니다. R Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“rank()로 값 순위 매기기”에서 뭘 배우나요?

average, first, min, max, random 동률 처리 방식으로 순위를 지정합니다. 브라우저에서 직접 실행하는 실습 코드로 R Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

R Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 R Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“rank()로 값 순위 매기기” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 R Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 R Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. sort()로 벡터 정렬하기
  2. 유연한 정렬을 위한 order()
  3. rank()로 값 순위 매기기
  4. 열을 기준으로 데이터 프레임 정렬하기
← R Academy(으)로 돌아가기