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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- sort()로 벡터 정렬하기
- 유연한 정렬을 위한 order()
- rank()로 값 순위 매기기
- 열을 기준으로 데이터 프레임 정렬하기