3

我有一个 8 列 1200 行的数据框(df)。在这 8 列中,我想找到第 7 列的最小值,并在找到第 7 列最小值的特定行中找到第 2 列的对应值。第 2 列也包含字符,所以我想要一个字符向量给我它的值。

我发现第 7 列的最小值使用

min_val <- min(as.numeric(df[, 7]), na.rm = TRUE)

现在,如何从第 2 列(列的变量名称为 'column.2')获取与上面计算的第 7 列包含 'min_val' 值的行相对应的值?

这可能是一个微不足道的问题,但我是 R 新手,所以任何帮助都将不胜感激。

4

2 回答 2

7

用于which.min获取最小值索引。就像是 :

df[which.min(df[,7]),2]

注意 which.min 只返回最小值的第一个索引,所以如果你有几行具有相同的最小值,你只会得到第一个。

如果要获取所有最小行,可以使用:

df[which(df[,7]==min(df[,7])), 2]
于 2013-10-17T09:34:39.177 回答
2

来自 juba 的相同答案,但使用 data.table 包(他的答案仅使用 R 基础,无需加载任何库)。

# Load data.table
library(data.table)

# Get 2nd column's value correspondent to the first minimum value in 7th column 
df[which.min(V7), V2]

# Get all respective values in 2nd column correspondent to the minimum value in 7th column 
df[V2 == min(V7), V2]

对于处理类似 data.frame 的对象,data.table非常方便和有用,就像dplyr包一样。值得一看。

在这里,我假设您的 colnames 被命名为 V1..V8。否则,只需将 V7/V2 分别替换为数据第 7 位和第 2 位的相应列名。

于 2018-04-05T19:03:35.193 回答