ようです技術的には依然として正確な出力ではあるが、ランク付け出力(Pos)はちょっと混乱して解釈が難しくなる。例えば計算は、グループごとにランクが、カウントネクタイは、このポストからフォローアップ1
:
Type X Pos
a 50 0
a 51 1
a 52 2
a 53 3
a 54 4
a 54 4
a 54 4
a 55 7
a 56 8
a 57 9
a 57 9
b 51 0
b 51 0
b 51 0
b 52 3
b 52 3
b 56 5
c 53 0
c 57 1
d 52 0
d 52 0
d 54 2
d 58 3
d 58 3
d 70 5
順位相対順位が(同じ値が同じランク付けされる、より低い値がより低いランク、およびより高い値は、より高いランクの)正しい、しかし:
library(plyr)
df <- data.frame(type = c(rep("a",11), rep("b",6), rep("c",2), rep("d", 6)),
x = c(50:53, rep(54, 3), 55:56, rep(57, 2), rep(51,3), rep(52,2), 56,
53, 57, rep(52, 2), 54, rep(58, 2), 70))
df<-ddply(df,.(type),transform, pos=rank(x,ties.method="min")-1)
を生成し私は出力をより美しく見せようとしています。何かご意見は?
私はこのようにして出力を取得したいのですが:
Type X Pos
a 50 1
a 51 2
a 52 3
a 53 4
a 54 5
a 54 5
a 54 5
a 55 6
a 56 7
a 57 8
a 57 8
b 51 1
b 51 1
b 51 1
b 52 2
b 52 2
b 56 3
c 53 1
c 57 2
d 52 1
d 52 1
d 54 2
d 58 3
d 58 3
d 70 4
このフォーマットはもちろん、各グループのレコードの合計数は問題ではありませんことを前提としています。 "-1"を取り除くことによって、0を取り除くことができますが、これは1つの側面のみを解決します。私は別の方程式とties.methodので遊んでみましたが、役に立たない。
おそらくrank()関数は私が使用するべきものではありませんか?
既にこれを認めている投稿がある場合は、私の方法で送ってください。たぶん私は何を検索するのかよくわからないかもしれませんが、私は間違いなく検索にいくつかのデューデリジェンスを行いました。
あなたのアイデアを事前におねがいします!また、これは私の最初の投稿ですので、基準、習慣、ベストプラクティスなどに関するフィードバックは高く評価されます。
はご回答いただきありがとうございます。 'dplyr'で 'dense_rank'を使用するとうまくいき、困ったことに私の質問に簡単に解決できました。そして、 'data.table'パッケージをロードしたら、frank()ソリューションは完全に機能しました。 – MillionC