我有一個data.frame與幾個經理的每日百分比回報,我想排序data.frame,以便有,例如最好的5個表演者和最差的5表演。排序R中的data.frame維護行名稱
我發現函數sort(x)
或rev(sort(x))
但他們不維護rownames,我需要它們以檢查管理器的名稱。
任何提示?
我有一個data.frame與幾個經理的每日百分比回報,我想排序data.frame,以便有,例如最好的5個表演者和最差的5表演。排序R中的data.frame維護行名稱
我發現函數sort(x)
或rev(sort(x))
但他們不維護rownames,我需要它們以檢查管理器的名稱。
任何提示?
你想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
我有同樣的問題,但沒有將q & A的我已經看到了SO已經處理了一列數據幀。 @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
如果有更好的方式來做到這一點,我將不勝感激任何指導
我有同樣的問題排序單列和我喜歡的事情的數據幀進行排序kludgy解決方案是添加第二列,例如'df.1col $ 1 < - 1',並且工作。 –
我發現這在其他一些網站和它的工作對我來說:
如果選擇一列,那麼默認的是刪除data.frame property.To抑制這種行爲,你可以設置滴= FALSE:
df.sort <- df[order(df[,"x"]), , drop = FALSE]
有點混亂,我們通常使用'order'在R. – joran