6
タイプと値を持つdf
があります。私はそれらをx
の順番でtype
の範囲内でランク付けし、他の行の行番号n
のほうが(pos
)より高い値のx
を数えます。各グループのランクを計算します
df <- data.frame(type = c("a","a","a","b","b","b"),x=c(1,77,1,34,1,8))
# for type a row 3 has a higher x than row 1 and 2 so has a pos value of 2
私はこれを行うことができます。
library(plyr)
df <- data.frame(type = c("a","a","a","b","b","b"),x=c(1,77,1,34,1,8))
df <- ddply(df,.(type), function(x) x[with(x, order(x)) ,])
df <- ddply(df,.(type), transform, pos = (seq_along(x)-1))
type x pos
1 a 1 0
2 a 1 1
3 a 77 2
4 b 1 0
5 b 8 1
6 b 34 2
しかし、このアプローチは、タイプa
行1と2をいただきまし間のアカウントの絆にネクタイが同じを持っていた出力を得るための最も簡単な方法を取ることはありません。値
type x pos
1 a 1 0
2 a 1 0
3 a 77 2
4 b 1 0
5 b 8 1
6 b 34 2
+1必要がないため!ランクがツールキットに追加されました! – user1320502
+1!なぜ「最小」の結び方ですか? – agstudy
ちょうど 'min'を読むと、結び目はベクトル内に見つかった順序で最小値を持つようになります。そうでなければ、私の関係は両方とも1 – user1320502