[r] Return row of Data Frame based on value in a column - R

My R data.frame df looks like:

     Name     Amount
1    "A"      150
2    "B"      120
3    "C"      "NA"
4    "D"      160
.
.
.

I want to get the Name and Amount row when I do something like min(df$Amount).

That gets me the minimum number in the Amount column, but how do I get the Name in that same row? Or the entire row for that matter?

Name should be "B" in this case.

Similar to Select * Where Amount = min(Amount)

What is the best way to do this in R?

This question is related to r

The answer is


You could use dplyr:

df %>% group_by("Amount") %>% slice(which.min(x))

Based on the syntax provided

 Select * Where Amount = min(Amount)

You could do using:

 library(sqldf)

Using @Kara Woo's example df

  sqldf("select * from df where Amount in (select min(Amount) from df)")
  #Name Amount
 #1    B    120
 #2    E    120

Use which.min:

df <- data.frame(Name=c('A','B','C','D'), Amount=c(150,120,175,160))
df[which.min(df$Amount),]

> df[which.min(df$Amount),]
  Name Amount
2    B    120

From the help docs:

Determines the location, i.e., index of the (first) minimum or maximum of a numeric (or logical) vector.