如何检索与R中数据帧中列的最大值对应的行值

时间:2017-04-09 00:55:51

标签: r

正如标题所示,我有一个查询来访问与列的最大值对应的行值(不是索引而不是整行)。

FOR EX:我有以下数据集(结果):

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

需要以下帮助:

  1. 如何编写命令来检索与标记(88)的最大col值对应的行值(“sam”)?
  2. 我可以使用以下命令获取标记列的最大值:

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

    但是,当我将其分配给变量以查看谁是考试的首位时,我只得到标题名称而不是sam的值。

    top_scorer<- results$Name[which.max(results$marks, na.rm = TRUEr)]
    
    1. 如何编写命令以找出哪个人在标记方面排在第二位?
    2. 请帮忙。我是R编程的初学者。

1 个答案:

答案 0 :(得分: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