Apache spark 将一列的百分比用于另一列
我需要按另一列的百分比对一列进行排序Apache spark 将一列的百分比用于另一列,apache-spark,apache-spark-sql,percentile,Apache Spark,Apache Spark Sql,Percentile,我需要按另一列的百分比对一列进行排序 import org.apache.spark.sql.expressions.Window import org.apache.spark.sql.functions.percent_rank val df = List((13,3), (12,5), (11,7), (8,8), (4,5), (3,4), (2,1), (1,2), (1,6) ,(1,12)).toDF("val1","val2") val w = Window.orderBy
import org.apache.spark.sql.expressions.Window
import org.apache.spark.sql.functions.percent_rank
val df = List((13,3), (12,5), (11,7), (8,8), (4,5), (3,4), (2,1), (1,2), (1,6) ,(1,12)).toDF("val1","val2")
val w = Window.orderBy(df("val1"))
df.select($"val1", $"val2",percent_rank().over(w).alias("val1_percent")).show()
我得到的结果是:
+----+----+------------------+
|val1|val2| val1_percent|
+----+----+------------------+
| 1| 2| 0.0|
| 1| 6| 0.0|
| 1| 12| 0.0|
| 2| 1|0.3333333333333333|
| 3| 4|0.4444444444444444|
| 4| 5|0.5555555555555556|
| 8| 8|0.6666666666666666|
| 11| 7|0.7777777777777778|
| 12| 5|0.8888888888888888|
| 13| 3| 1.0|
+----+----+------------------+
但我想得到的是列“val2”的排名和百分比“val1”,即在下表中,我想得到列“val2_%”:
请注意,在Excel中,它与PERCENTRANK方法配合良好。您可以这样使用它:PERCENTRANK([val1所有值],[val2的一个值])
编辑:
在Excel中,我将val1的所有值放在A列,val2的所有值放在B列。对于以下公式=PERCENTRANK(A1:A10,B1),我得到0.333(如果B1=2)如何计算
val2_%
?我不清楚。在Excel中,你这样写:我把所有的val1都放在A列,如果我写=PERCENTRANK(A1:A10,3)
我得到0.333,很抱歉,我不明白你的问题。没有excel,如何计算val2_percent@eliasah@JacekLaskowski LOL我知道如何使用excel,但我不确定A1:A10代表的范围是什么:)如何计算val2_%
?我不清楚。在Excel中,你这样写:我把所有的val1都放在A列,如果我写=PERCENTRANK(A1:A10,3)
我得到0.333,很抱歉,我不明白你的问题。没有excel,如何计算val2_percent@eliasah@JacekLaskowski LOL我知道如何使用excel,但我不确定A1:A10代表的范围是多少:)
+----+----+------------------+----------------+
|val1|val2| val1_percent|val2_percent |
+----+----+------------------+----------------+
| 1| 2| 0.0|0.333 |
| 1| 6| 0.0|0.611 |
| 1| 12| 0.0|0.888 |
| 2| 1|0.3333333333333333|0 |
| 3| 4|0.4444444444444444|0.555 |
| 4| 5|0.5555555555555556|0.583 |
| 8| 8|0.6666666666666666|0.666 |
| 11| 7|0.7777777777777778|0.638 |
| 12| 5|0.8888888888888888|0.583 |
| 13| 3| 1.0|0.444 |
+----+----+------------------+----------------+