根据列中的值返回数据框的行 - R.

brn*_*792 22 r

我的R data.frame df看起来像:

     Name     Amount
1    "A"      150
2    "B"      120
3    "C"      "NA"
4    "D"      160
.
.
.
Run Code Online (Sandbox Code Playgroud)

当我做类似的事情时,我想获得名称和金额行min(df$Amount).

这使我得到Amount列中的最小数字,但是如何在同一行中获取Name?或整个行?

在这种情况下,名称应为"B".

相近 Select * Where Amount = min(Amount)

R中最好的方法是什么?

Kar*_*Woo 35

@ Zelazny7的答案有效,但如果你想保持关系,你可以这样做:

df[which(df$Amount == min(df$Amount)), ]
Run Code Online (Sandbox Code Playgroud)

例如,使用以下数据框:

df <- data.frame(Name = c("A", "B", "C", "D", "E"), 
                 Amount = c(150, 120, 175, 160, 120))

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

df[which(df$Amount == min(df$Amount)), ]
#   Name Amount
# 2    B    120
# 5    E    120
Run Code Online (Sandbox Code Playgroud)

编辑:如果Amount列中有NA,您可以执行以下操作:

df[which(df$Amount == min(df$Amount, na.rm = TRUE)), ]
Run Code Online (Sandbox Code Playgroud)


Zel*_*ny7 5

用途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
Run Code Online (Sandbox Code Playgroud)

来自帮助文档:

确定位置,即数字(或逻辑)向量的(第一个)最小值或最大值的索引.