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

R-如何基于同一行另一列的值从一列中获取值,r,statistics,R,Statistics,我有一个8列1200行的数据框(df)。在这8列中,我想找到第7列的最小值,并在找到第7列最小值的特定行中找到第2列的相应值。第2列也包含字符,所以我需要一个字符向量来给出它的值 我发现第7列的最小值是使用 min_val <- min(as.numeric(df[, 7]), na.rm = TRUE) min\u val使用which.min获取最小值索引。比如: df[which.min(df[,7]),2] 请注意,which.min只返回最小值的第一个索引,因此,如果有多行具

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

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

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

min\u val使用
which.min
获取最小值索引。比如:

df[which.min(df[,7]),2]
请注意,which.min只返回最小值的第一个索引,因此,如果有多行具有相同的最小值,则只会得到第一行

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

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

juba给出了相同的答案,但使用了data.table包(他的答案只使用R基,不需要加载任何库)

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


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

我认为您指的是df[which.min(df[,7]),2]或df[which.min(df[,7]),'column.2']。类似地,df[which(df[,7]==min(df[,7])),2]@HongboZhu是的,当然,我切换了两个列。修复,感谢您的报告。问题是我需要避免在第7列中出现NAs。我在哪能查到?和“df[which(df[,7]==min(df[,7])),2]”返回索引的数字向量?@Nicky如果“避免”的意思是“无论如何计算最小值”,您可以将
na.rm=TRUE
添加到
min()
调用中:
min(df[,7],na.rm=TRUE)
。明白了!非常感谢朱巴和洪博珠。
# 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]