2016-04-04 9 views
0

に2つの列を組み合わせSparkRに2つの列を結合するための簡単な方法は何ですか?私はこのようなロジックでsalary列を組み合わせて取得したいと思いがSparkR

salary_from salary_to position 
1500   null  a 
null   1300  b 
800   1000  c 

:スパークDF以下のことを検討してください。 salary_fromsalary_toからヌルでないものを取り出し、両方が存在する場合は、真ん中で値を取る。

salary_from salary_to position salary 
1500   null  a   1500 
null   1300  b   1300 
800   1000  c   900 

Rのapplyメソッドと同じように、すべての行を処理して論理を適用する方法はありますか?最初のNULLでない式を返し

withColumn(
    sdf, "salary", 
    expr("coalesce((salary_from + salary_to)/2, salary_from, salary_to)") 
) 

+0

私はsparkrext、sparkrとdplyrを組み合わせたパッケージについて聞いたが、私はヤーhttps://github.com/hoxo-m/SparkRextそれを使用していませんでした。多分あなたを助けるかもしれません.. –

答えて

1

あなたは​​3210機能を使用することができます。

+0

SparkR APIリファレンスhttp://spark.apache.org/docs/latest/api/R/index.htmlで合体が見つかりません。私はそれについてもっと知ることができる場所に私を指摘してください。 –

+2

まだ存在しないため、できません。なぜ 'expr'が必要なのですか?そうでなければ、単純なSQLの 'coalesce'だけなので、どんなSQL参照も行います。たとえば、http://www.w3schools.com/sql/sql_isnull.aspなどです。またはPySparkのドキュメンテーション文字列:https://github.com/apache/spark/blob/master/python/pyspark/sql/functions.py#L212 – zero323

+0

は、Sparkデータフレームの列をループする方法はありますか? –