6

我有一种感觉,这是我只是不使用我应该使用的功能的那些愚蠢的简单事情之一。

这是函数的相关部分:

min(DATASET$COLUMNNAME, na.rm = TRUE)

现在,它从 COLUMNNAME 报告正确的值——该列中的最小值。伟大的。但是,我真正想要它做的是在数据框中查看 NAME 列中该结果的条目并打印它。它根本不应该打印最小值,只打印 NAME 中具有 COLUMNAME 最小值的行的条目。

以某种方式获取该最小值的行号并返回 DATASET$NAM​​E[row,] 的最佳方法是什么?

4

2 回答 2

27

寻找这个也许:

DATASET$NAME[DATASET$COLUMNNAME == min(DATASET$COLUMNNAME)]

也就是说,您NAME从中选择DATASET,其中COLUMNAME具有最小值。

如果您不喜欢重复DATASET这么多次,这等效于使用with

with(DATASET, NAME[COLUMNNAME == min(COLUMNNAME)])
于 2013-10-11T20:55:51.713 回答
24

您正在寻找的功能是which.min

> set.seed(123)
> df<-data.frame(name=sample(LETTERS[1:10]),value=sample(10))
> df
   name value
1     C    10
2     H     5
3     D     6
4     G     9
5     F     1
6     A     7
7     J     8
8     I     4
9     B     3
10    E     2
> df[which.min(df$value),]
  name value
5    F     1
> df$name[which.min(df$value)]
[1] F
Levels: A B C D E F G H I J
于 2013-10-11T21:07:55.880 回答