2017-04-09 20 views
-3

如標題所示,我有一個查詢來訪問對應於最大值爲a的行值(而不是索引,而不是整行)柱。如何檢索對應於R中的數據幀中列的最大值的行值

FOR EX:我有下面的數據集(結果):

Name   subject  marks 
sam   maths  88 
paul   science  79 
tom   social  66 
james   english  78 
richard  maths  83 

需要幫助如下:對應最大

  1. 如何寫命令檢索行值( 「SAM」)商標的共同價值(88)?

我可以使用下面的命令來獲取標記列的最大值:

max(results$marks, na.rm = TRUE) 

然而,當我把它分配給一個變量,看看誰突破了考試,我只得到了頭名字沒有價值作爲山姆。

top_scorer<- results$Name[which.max(results$marks, na.rm = TRUEr)] 
  • 如何寫一個命令找出哪個人來第二次在標記方面就行了?
  • 請幫忙。我是R編程的初學者。

    +0

    [如何選擇每個組中具有最大值的行]的可能重複(http://stackoverflow.com/questions/24558328/how-to-select-the-row-with-the-maximum-value -in-各基團) – C8H10N4O2

    回答

    1

    你快到了。您的示例代碼中實際使用which.max。要獲得第二高的人marks,您可以通過marks訂購,然後參加第二項。這應該適用於兩者。我們使用which.max最大和第二最大排序:

    df <- data.frame(Name=c("sam","paul","tom","james", "richard"), 
           subject=c("maths", "science", "social", "english", "maths"), 
           marks=c(88,79, 66, 78, 83)) 
    
    
    df$max_name <- df$Name[which.max(df$marks)] 
    df <- df[order(df$marks,decreasing=T),] 
    df$second_max_name <- df$Name[2] 
    

    注意,如果你想,你可以使用排序,以獲得最大的好,order功能默認爲把NA的最後。

    相關問題