複数のマネージャーの毎日のパーセンテージ リターンを含む data.frame があります。data.frame を並べ替えて、たとえば最高の 5 人のパフォーマーと最低の 5 人のパフォーマーを表示したいと考えています。
sort(x)
関数を見つけましたrev(sort(x))
が、行名を保持していないため、マネージャーの名前を確認するために必要です。
任意のヒント?
私は同じ問題を抱えていましたが、SOで見たQ&Aはどれも単一列のデータフレームを扱っていません. 列が1つしかない場合、@eddiの答えは機能しません。
df.2col <- data.frame(a = c(4:1), b = c(1:4), row.names = paste0('blah', c(1:4)))
print(df.2col[order(df$a),])
素敵なソートされたデータフレームが得られます:
a b
blah4 1 4
blah3 2 3
blah2 3 2
blah1 4 1
しかし、単一の列では、
df.1col <- data.frame(a = c(4:1), row.names = paste0('blah', c(1:4)))
print(df.1col[order(df$a),])
行名は破棄されます:
[1] 1 2 3 4
私が頼らなければならなかった厄介な解決策は、データと行の両方をソートすることでした:
df.sorted<-data.frame(a=df.1col$a[order(df.1col$a)],row.names=row.names(df.1col)[order(df.1col$a)])
print(df.sorted)
望ましい結果:
a
blah4 1
blah3 2
blah2 3
blah1 4
これを行うためのより良い方法があれば、ご指導いただければ幸いです
あなたがしたいorder
:
df = data.frame(a = c(4:1), b = c(1:4), row.names = paste0('blah', c(1:4)))
df
# a b
#blah1 4 1
#blah2 3 2
#blah3 2 3
#blah4 1 4
df[order(df$a),]
# a b
#blah4 1 4
#blah3 2 3
#blah2 3 2
#blah1 4 1