R:从对应于另一列中的最小值的数据帧中的一列返回值

时间:2014-12-23 04:41:21

标签: r dataframe subset

所以我意识到标题不是最好的,但我不确定如何说出来。我的问题看起来应该很简单,但我非常喜欢R新手,所以我不知道怎么做。

我们说我有一个数据框,例如:

X Y
A 1
B 2
C 3
D 4
E 5

如何返回最小Y的相应X值?在这种情况下,我希望它返回A,因为Y列中的最小值是1.

我甚至不确定从哪里开始,所以原谅我缺少示例代码,因为我没有。

2 个答案:

答案 0 :(得分:4)

使用dplyr

library(dplyr)
filter(df, Y == min(Y))

仅适用于X值:

filter(df, Y == min(Y)) %>% select(X)

或者:

filter(df, Y == min(Y)) %>% .$X

答案 1 :(得分:2)

您可以尝试which.min

with(df, X[which.min(Y)])
#[1] "A"

或者假设您duplicate中的Y最小值,您可以使用==。例如

 df$Y[3] <- 1
 with(df,X[ Y == min(Y)])
 #[1] "A" "C"

which.min仅返回first最小值

的索引
 with(df, X[which.min(Y)])
 #[1] "A"

数据

df <- structure(list(X = c("A", "B", "C", "D", "E"), Y = 1:5), .Names =
c("X", "Y"), class = "data.frame", row.names = c(NA, -5L))