2016-02-24 33 views
-4

我有一個尺寸爲32 x 11的R數據框。對於每一行,我想確定最高值,次高和第三高值以及添加這些值作爲初始數據幀的額外列(32 x 14)。提前謝謝了!R:對行進行排序,查詢它們並將結果添加爲列表

library(car) 
data(mtcars) 
mtcars 
+1

你的代碼並不顯示任何研究都...嘗試了一下,然後如果你可以尋求幫助」 t自己解決 – HubertL

回答

1

首先,創建一個函數來獲得矢量的第n個最高值。然後,創建一個數據框的副本,因爲隨着添加更多列,第二個最高值可能會更改。然後使用apply和1應用您的功能以逐行操作。我不確定如果數據中有NAs會發生什麼情況。我沒有測試它...

事情是這樣的......

nth_highest <- function(x, n)sort(x, decreasing=TRUE)[n] 
tmp <- mtcars 
mtcars$highest <- apply(tmp, 1, function(x)nth_highest(x,1)) 
mtcars$second_highest <- apply(tmp, 1, function(x)nth_highest(x,2)) 
mtcars$third_highest <- apply(tmp, 1, function(x)nth_highest(x,3)) 
rm(tmp) 
+0

謝謝cory!下面的作品也是't(apply(mtcars,1,sort))' – Jon

相關問題