如何找到数据框中特定列的哪一行具有最高值?

时间:2017-10-20 14:13:21

标签: r dataframe row

我不知道如何找到哪一行会为数据框中的特定列提供最高价值

例如下面。

mtcars 
               mpg cyl disp  hp drat   wt ... 
Mazda RX4     21.0   6  160 110 3.90 2.62 ... 
Mazda RX4 Wag 21.0   6  160 110 3.90 2.88 ... 
Datsun 710    22.8   4  108  93 3.85 2.32 ...

我专注于wt列并试图查看哪一个具有最高值,这将是2.88的马自达RX4 Wag

另外,如何使用名称而不是向量来查找特定值? 例如Mazda RX4 Wag wt。我试过了df[df$Mazda RX4 Wag,df$wt],但却给了我一个错误。

由于

4 个答案:

答案 0 :(得分:2)

至于你的第一个问题。

subset(mtcars, wt == max(wt))[, "wt"]
[1] 5.424

至第二个问题

mtcars[row.names(mtcars) == "Mazda RX4 Wag", "wt"]
[1] 2.875

答案 1 :(得分:1)

如果您想要最大值的行号,请使用which.max()

> which.max(mtcars$wt)
[1] 16

要获取该行中的所有信息,请使用它来对数据框进行子集化:

> mtcars[which.max(mtcars$wt),]
                     mpg cyl disp  hp drat    wt  qsec vs am gear carb
Lincoln Continental 10.4   8  460 215    3 5.424 17.82  0  0    3    4

要按名称选择data.frame的元素,只需将它们作为字符串插入即可。如果您想要多个行或列,则必须将它们放入带有c()的矢量中。

> mtcars['Mazda RX4 Wag','wt']
[1] 2.875

答案 2 :(得分:0)

也许是这样的:

which(name.of.datatable == max(name.of.datatable[, 7]), arr.ind = T)

答案 3 :(得分:0)

drop = FALSE可让您打印汽车名称,即您具有最高或最低wt值的行名称

<强> 1。 wt列的最高值

打印最大值(使用max()功能)或wt列的最高值。

 mtcars[mtcars$wt == max(mtcars$wt), "wt", drop = FALSE]
 #                        wt
 # Lincoln Continental 5.424

按照ycw的建议使用which.max()

  mtcars[which.max(mtcars$wt), "wt", drop = FALSE]
  #                        wt
  # Lincoln Continental 5.424

<强> 2。 wt列的最低值

打印最小值(使用min()功能)或wt

的最低值
 mtcars[mtcars$wt == min(mtcars$wt), "wt", drop = FALSE]
 #                 wt
 # Lotus Europa 1.513

按照ycw的建议使用which.min()

 mtcars[which.min(mtcars$wt), "wt", drop = FALSE]
 #                 wt
 # Lotus Europa 1.513