문제

한 사람이 4 명의 심사 위원이 있고 각각 특정 연기자 또는 특정 주제에 대해 점수를 주면 각각 점수가 포함 된 4 개의 벡터를 가질 수 있습니다. 그러나 하나는 다른 판사에 비해 한 판사에 의해 등급 인플레이션을 극복하기 위해 그것을 순위로 바꾸고 싶습니다. 쉽습니다

transform(assignment,judge1.rank=rank(judge1),judge2.rank=rank(judge2),
                     judge3.rank=rank(judge3), judge4.rank=rank(judge4))

그러나 각 행 (Performer 또는 Topic)에 대해 각 행에 대해 각 판에 대한 순위 (또는 병렬 순위)를 표시하는 4 개의 열을 원합니다.

나는 다음과 같은 일을하고 싶습니다

prank(judge1.rank,judge2.rank,judge3.rank,judge4.rank)

데이터 프레임으로 출력해야 할 것 같아요.

나는 재구성 패키지를 사용하여 데이터를 녹이는 것을 생각했지만 그것은 예비 사고 일뿐입니다.

도움이 되었습니까?

해결책

내가 당신을 올바르게 이해한다면, 이것은 당신이 원하는 것을 할 것입니다.

## example data
set.seed(1)
judge <- data.frame(judge1 = sample(1:10), judge2 = sample(1:10),
                    judge3 = sample(1:10), judge4 = sample(1:10))

우리는 사용하는 각 판사의 순위를 계산합니다 sapply() 순위 행렬을 반환합니다. 그런 다음 우리는 적용을 사용합니다 rank() 이 매트릭스의 행에서 성능/행 순위를 계산합니다. 최종 전환은 필요한 방향으로 결과를 다시 얻습니다.

> t(apply(sapply(judge, rank), 1, rank))
      judge1 judge2 judge3
 [1,]    1.5    1.5    3.0
 [2,]    3.0    1.5    1.5
 [3,]    1.0    2.5    2.5
 [4,]    2.0    3.0    1.0
 [5,]    1.0    2.0    3.0
 [6,]    2.5    1.0    2.5
 [7,]    3.0    2.0    1.0
 [8,]    3.0    1.0    2.0
 [9,]    3.0    1.0    2.0
[10,]    1.0    3.0    2.0

함수로 마무리하면 가기에 좋습니다.

prank <- function(df, ...) {
    t(apply(sapply(df, rank, ...), 1, rank, ...))
}

주는 것 :

> prank(judge)
      judge1 judge2 judge3
 [1,]    1.5    1.5    3.0
 [2,]    3.0    1.5    1.5
 [3,]    1.0    2.5    2.5
 [4,]    2.0    3.0    1.0
 [5,]    1.0    2.0    3.0
 [6,]    2.5    1.0    2.5
 [7,]    3.0    2.0    1.0
 [8,]    3.0    1.0    2.0
 [9,]    3.0    1.0    2.0
[10,]    1.0    3.0    2.0

그만큼 ... 인수를 허용합니다 rank() 예를 들어 전달됩니다 ties.method 논쟁:

> prank(judge, ties = "min")
      judge1 judge2 judge3
 [1,]      1      1      3
 [2,]      3      1      1
 [3,]      1      2      2
 [4,]      2      3      1
 [5,]      1      2      3
 [6,]      2      1      2
 [7,]      3      2      1
 [8,]      3      1      2
 [9,]      3      1      2
[10,]      1      3      2
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top