R - 如何基于来自同一行的另一列的值从列获取值

时间:2013-10-17 09:27:38

标签: r statistics

我有一个包含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的新手,所以任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:6)

使用which.min获取最小值索引。类似的东西:

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

请注意,which.min只返回最小值的第一个索引,因此如果您有多个具有相同最小值的行,则只能获得第一个。

如果您想获得所有最小行数,可以使用:

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

答案 1 :(得分:2)

来自juba的相同答案,但是使用了data.table包(他的答案只使用了R base,而不需要加载任何库)。

# 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.table 非常方便有用,就像 dplyr 包一样。值得一看的是它们。

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