【问题标题】:Find row with lowest value in COLUMNA, return row's COLUMNB在 COLUMN 中查找具有最低值的行,返回行 COLUMN
【发布时间】:2013-10-12 05:07:55
【问题描述】:

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

这是函数的相关部分:

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

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

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

【问题讨论】:

  • 去掉最后的逗号

标签: r


【解决方案1】:

可能正在寻找这个:

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

即从DATASET中选择NAME,其中COLUMNAME的值最小。

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

with(DATASET, NAME[COLUMNNAME == min(COLUMNNAME)])

【讨论】:

  • 做到了!我会给你一个赞成票,但我还没有代表。感谢您的帮助!
【解决方案2】:

你要找的函数是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

【讨论】:

  • 如果有两行的值为 1,我想同时拥有它们怎么办?
猜你喜欢
  • 2017-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多