2017-02-22 1 views
1

私はこのようになります頭とdata.frameありますR - throwsエラーのグループ化のカウントを取得する - ベクトルではありませんか?

> head(movies_by_yr) 

Source: local data frame [6 x 4] 
Groups: YR_Released [6] 

       Movie_Title YR_Released Rating Num_Reviews 
       <fctr>  <fctr> <dbl>  <int> 
1 The Shawshank Redemption  1994 9.2  1773755 
2   The Godfather  1972 9.2  1211083 
3 The Godfather: Part II  1974 9.0  832342 
4   The Dark Knight  2008 8.9  1755341 
5    12 Angry Men  1957 8.9  477276 
6   Schindler's List  1993 8.9  909358 

注作成したとき、私はstringsAsFactors=FALSEを指定したので、私は、私は、データフレームをグループ化する際の要因に変換してしまった列が変換されたと信じていることを次のステップに備えて:

movies_by_yr <- group_by(problem1_data, YR_Released) 

ここで問題が発生します。目標はYR_Releasedでグループ化し、年ごとにレコードの数を得ることです。私は、次のステップはこのようなものになるだろうと思ったが、それはエラーをスローし、私は私が間違っているのかわからないです:

summarise(movies_by_yr, total = nrow(YR_Released)) 

私はnrowを選択し、あなたがその内のグループ化、行の数を持っているので、一度グループ化はカウントでなければなりません。誰かが私が間違っていることを指摘できますか?

スローエラーは次のとおりです。

Error in summarise_impl(.data, dots) : Not a vector 

しかし、私はこのdata.frameは、一連のベクトルとどんなクラスからのサンプルコードとは異なり、私の試みに基づいて作成されたものを知って、私はそれを見ていないです。誰かがこれを答えることができることを望ん...

答えて

1

(私はそれはあなたが欲しいものだと思う)これを試してみてください将来の読者にとって有益です。

ドキュメント?nrowを見ると、その関数がdata.frameまたはmatrixで呼び出されることがわかります。あなたはそれを列、YR_Releasedで呼んでいます。 nrowのベクトル特有の変形があり、(混乱して)NROWと呼ばれています。代わりにそれを試してみるとうまくいくかもしれません。

mycars <- mtcars 
mycars <- group_by(mycars, cyl) 
summarise(mycars, total = NROW(cyl)) 
#> # A tibble: 3 x 2 
#>  cyl total 
#> <dbl> <int> 
#> 1  4 11 
#> 2  6  7 
#> 3  8 14 

そしてそれは、このような一般的なユースケースだから、ラッパー関数count()はあなたにいくつかのコードを保存します:

しかし、それがない場合でも、行をカウントすることを意図しdplyr方法は、このように、n()であります:

mtcars %>% 
    count(cyl) 
+0

データフレームであるオリジナルコードのコンテキストでcount()が動作しません。あなたのモデルに続いて、:my_df%>%count(my_column)を試してみました。何故かはわからない。 elegenatのソリューションのように見えます。問題が何を求めているかというあなたの以前の解決策はうまくいきましたが、今私はそれをソートする方法やカウントから最大値を抽出する方法に取り組んでいます。これまで私に連絡してくれてありがとう。非常に役立ちます。 – TMWP

+0

問題は実際には最高の数で年を欲しかった。あなたに感謝 - 私はちょうどそこに着いた。最初の答えをモデル化するコードを設定したら、データフレームに格納してカウント列の最大値に等しい行を索引付けするという単純な問題でした...私のコードは次のようになっていました:movies_by_yr < - group_by(problem1_data、YR_Released); df_sum1 < - tbl_df(summarize(movies_by_yr、rCount = NROW(YR_Released))); df_sum1 [df_sum1 $ rCount == max(df_sum1 $ rCount)、]; – TMWP

+0

'count()'は文字列引数を取ると思います。これは正しく動作します: 'mtcars%>%count(" cyl ")'または 'mtcars%>%summarize(count(cyl))' – Avi

0

だが、この多くを作るために、内蔵のmtcars data.frameのように、誰もが持っているデータを使用してみましょう

table(movies_by_year$YR_Released) 
+0

私は私の元のコードに一致するように、「movies_by_yr」に「movies_by_year」を修正したら、これが問題に正しい答えを返さないので、感謝します。これが現実の世界の問題だったら、私はやっていましたが、group_byを使って、クラスで行ったトレーニングのように要約すると思います。元のアプローチを修正する方法についての洞察は(たとえそれが最良のものではないかもしれないが)? – TMWP

関連する問題