私はSparkR DataFrame
を持っていて、一意のそれぞれname
に対してモード(多くの場合)value
を取得したいと考えています。これどうやってするの?組み込みのmode
機能はないようです。 SparkRまたはPySparkのいずれかのソリューションが動作します。spark列のgroupByでモード(多くの場合)値を取得する
#Create DF
df <- data.frame(name = c("Thomas", "Thomas", "Thomas", "Bill", "Bill", "Bill"),
value = c(5, 5, 4, 3, 3, 7))
DF <- createDataFrame(df)
name | value
-----------------
Thomas | 5
Thomas | 5
Thomas | 4
Bill | 3
Bill | 3
Bill | 9
#What I want to get
name | mode(value)
-----------------
Thomas | 5
Bill | 3
ありがとう、@pandaromeo。あなたは 'Window.partitionBy( 'name')。orderBy(desc( 'count'))'が何をしているのか説明できますか?また、このコードをSparkRに変換する際に問題がありますが、 'windowPartitionBy'コマンドはそこに存在します。 –
'groupBy'と' agg'の後に 'count'カラムがあります。あなたが昇順で 'orderBy'を実行すると想像してください。 'window'ではそれを並べ替えるだけでなく、あなたに興味のあるものだけをフィルタリングするインデックスを与えます。この場合、それらは 'モード(最も頻繁に)value'です。残念ながら私はRの経験がないので、SparkRに翻訳することはできません。 –
実際には、このリンクでよく説明されています:https://github.com/apache/spark/blob/master/R/pkg/vignettes/sparkr-vignettes.Rmd。 –