2016-12-07 6 views
0

mtcarsのデータフレームを作成しました。私はgearcylでグループを行います。私はhpdispのための最大を計算します。そこには8つのグループがあるはずなので、何かがグループで間違っている。私は6つのグループしか得られません。sparkRのGroupbyが希望の結果を出さない

library(sparkR) 
xx=as.DataFrame(sqlContext, data = mtcars) 

head(agg(groupBy(xx, "gear", "cyl"), hp = 'max')) 
    gear cyl max(hp) 
1 3 8  245 
2 5 4  113 
3 3 4  97 
4 4 4  109 
5 5 6  175 
6 3 6  110 

アップデート1:

私たちは例を持っているgroupbyのドキュメントで、別のクエリを持っているように:私は

agg(groupBy(xx, "gear", "cyl"), qsec ="avg", "disp" -> "max") 
を思い付いた

mtcarsための同様
## Examples 

## Not run: 
    # Compute the average for all numeric columns grouped by department. 
    avg(groupBy(df, "department")) 

    # Compute the max age and average salary, grouped by department and gender. 
    agg(groupBy(df, "department", "gender"), salary="avg", "age" -> "max") 

## End(Not run) 

まず、私の理解は、 dispの最大値を取得しますが、コードが機能していないようです。それは以下のようにエラーを出します。もう1つは、コードが->の代わりに=で動作することです。それで、タイプミスなどがあります。

unable to find an inherited method for function ‘groupBy’ for signature ‘"function"’ 

マイSparkRバージョンがSparkR_1.6.1です。

答えて

1

あなたの集計はうまくいっていますが、最初に「頭」を追加すると、最初の6行だけが表示されます。それを収集して交換する必要があります。このような :

df <- as.DataFrame(mtcars) 
gp = agg(groupBy(df, df$gear, df$cyl), hp = 'max') 
collect(gp) 

ただ、発言、私は火花2.0.2

+0

ああを使用しています。どのように私は '頭を逃すことができます。 'collect'に関するアドバイスをありがとう。 –

+0

更新情報をご覧ください。 –

+0

あなたのスパークのバージョンを教えてください。そして、 "disp" - > "max"の意味がdisp変数の最大値を取得するだけであれば、 '='で置き換える必要があります。 –

関連する問題