我的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)
用途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)
来自帮助文档:
确定位置,即数字(或逻辑)向量的(第一个)最小值或最大值的索引.