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
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.
Source: Stackoverflow.com