2014-11-22 1 views
0

저는 R이 처음인데 꽤 흥미 롭습니다.R을 평균 한 순서와 동점을 기준으로 한 벡터 순위 지정

나는 잘 작동하는 순서에 따라 벡터의 순위를 매기는 MATLAB 코드를 가지고 있습니다. 지금은 R 코드로 변환 할, 전형적인 스피어는 타이로 순위 :

# MATLAB CODE 

function r=drank(x) 

u = unique(x); 
[xs,z1] = sort(x); 
[z1,z2] = sort(z1); 
r = (1:length(x))'; 
r=r(z2); 

for i=1:length(u) 

    s=find(u(i)==x); 

    r(s,1) = mean(r(s)); 

end 

이 내가 뭘하려 :

# R CODE 

x = c(10.5, 8.2, 11.3, 9.1, 13.0, 11.3, 8.2, 10.1) 

drank <- function(x){ 

    u = unique(x) 
    xs = order(x) 
    r=r[xs] 

    for(i in 1:length(u)){ 
     s=which(u[i]==x) 
     r[i] = mean(r[s]) 
    } 

    return(r) 
} 

R < - 마신 (x)의

결과 :

r = 5, 1.5, 6.5, 3, 8, 6.5, 1.5, 4 

1.58.2의 평균 두 배, 즉 발생합니다. 두 번 발생

6.511.3의 평균 묶어

사람은 내가 그것을 확인 도와 드릴까요?

감사합니다,

+0

샘플 데이터를 게시하고 결과를 기대하십시오. 또한,이 함수가 무엇을하기로되어 있는지 말로 설명하십시오. – Andrie

+0

@Andrie 예를 게시했습니다. – aliocee

+0

게시하기 전에 SO 검색을 완료해야합니다. 이 검색 전략은 Q에 응답하는 첫 번째 Q에서 4 개의 히트를 전달했습니다.'순위 순서 동점 평균 [r] ' –

답변

3

R 순위에 내장 된 기능을 가지고, rank()라고 그것은 당신이 찾고있는 정확하게 무엇을 제공합니다

x = c(10.5, 8.2, 11.3, 9.1, 13.0, 11.3, 8.2, 10.1) 
expected <- c(5, 1.5, 6.5, 3, 8, 6.5, 1.5, 4) 

rank(x) 
# [1] 5.0 1.5 6.5 3.0 8.0 6.5 1.5 4.0 

identical(expected, rank(x)) 
# [1] TRUE 
+0

Andrie 감사합니다. 함수 defination을 볼 수 있습니까? – aliocee

+0

예. 콘솔에'rank'라고 입력하십시오. 이런 식으로 모든 기능의 코드를 볼 수 있습니다. – Andrie

+0

완벽하게 감사합니다. – aliocee

관련 문제