我有以下数据框:
|id|year|
|--|----|
|a |2015|
|a |2016|
|a |2017|
|b |2015|
|b |2017|
我可以通过它来获取:
|id|2015|2016|2017|
|--|----|----|----|
|a | 1 | 1 | 1 |
|b | 1 | 0 | 1 |
使用:
val result = data.groupBy("id").pivot("year").count().na.fill(0)
我想添加一个总列(所有年份的总和)。得到这个的最有效方法是什么?
|id|2015|2016|2017|Total|
|--|----|----|----|-----|
|a | 1 | 1 | 1 | 3 |
|b | 1 | 0 | 1 | 2 |
我目前采用上述结果并总结年份列。
val columnsToSum = result.columns.filterNot(c=> Seq("id").contains(c))
result.withColumn("Total", columnsToSum.map(col(_)).reduce(_ + _))
有没有更好的方法(内置功能)?