如何找到最小值并与核心对应列一起显示

时间:2019-06-21 08:33:04

标签: scala apache-spark

我有一个数据框,我想将_c3中的最小值显示为对应的_c0值

+-----------+----+
|        _c0| _c3|
+-----------+----+
|ITE00100554| -75|
|ITE00100554|-148|
|GM000010962|   0|
|EZE00100082| -86|
|EZE00100082|-135|
|ITE00100554| -60|

我已经选择了如上所示的列,并使用聚合函数来找到最小值

val g = df.select($"_c0",$"_c3").agg(min($"_c3"))

df.filter($"_c2" === "TMAX")

val g = df.select($"_c0",$"_c3").agg(min($"_c3"))

但这是我得到的输出:

+--------+
|min(_c3)|
+--------+
|      -1|
+--------+

如何更改代码以获取_c0及其旁边的最小_c3值?

1 个答案:

答案 0 :(得分:0)

  

在COLUMNA中查找值最低的行,从COLUMNB返回值

一种简单的方法如下所示:

> 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

但是更有效的方法是:

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

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

如果您不喜欢重复DATASET这么多次,则等同于使用:

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

希望这会有所帮助。如果它不能回答您的问题,或者您有其他意见,请告诉我。祝你好运。