여기에 재현 가능한 데이터 예제가 있습니다. 다음 데이터 프레임의 경우 : 내가 시도다른 열의 순위에 따라 R의 데이터 프레임에 열을 추가하십시오.
Subject SNR Rank
John -4 1
John -4 1
John 0 2
John 4 3
Mary 0 1
Mary 4 2
Mary 4 2
Mary 8 3
:
df <- data.frame(Subject = c('John', 'John', 'John', 'John','Mary', 'Mary', 'Mary', 'Mary'),
SNR = c(-4,-4,0,4,0,4,4,8))
나는 열은 다음과 같을 것이다 그래야, 주제에 의한 SNR에 대한 순위를 제공하는 '순위'를 추가하고 싶습니다 사용 :
dfNew <- transform(df, Rank = ave(SNR, Subject, FUN = function(x) rank(x, ties.method = "first")))
하지만 내가 얻을 다음
Subject SNR Rank
John -4 1
John -4 2
John 0 3
John 4 4
Mary 0 1
Mary 4 2
Mary 4 3
Mary 8 4
다른 ties.method 옵션을 사용해 보았지만 찾고있는 것을 제공하지 못했습니다 (즉, 1-3의 순위 만).
은 어떤 도움이 많이 주시면 감사하겠습니다!
'dplyr :: dense_rank'을 사용해보세요. 또는 패키지를 사용하지 않으려는 경우에만 코드를 사용하십시오. 기본 R 코드의 두 줄 밖에 없습니다. –
'function (x) as.numeric (factor (x))'가 당신의 시도에서 작동 할 것입니다. 또는 ave가'SNR'의 유형으로 되돌아 가게 될 것이기 때문에'factor (x)'만 사용하십시오. – rawr
트릭을 해주신 @rawr, 고마워요. – Rmg