web-dev-qa-db-ja.com

R-UseMethod( "groups")のエラー:クラス "character"のオブジェクトに適用される 'groups'に適用可能なメソッドはありません

「count」を使用して、データフレームの列を要約していました。列(dataset$Nationality)複数回発生する可能性のある国籍(スイス、ドイツ語、フランス語、スイスなど)で構成されます。今日は突然エラーメッセージが表示されるまで、問題なく動作しました。

UseMethod( "groups")のエラー:クラス "character"のオブジェクトに適用される 'groups'に適用可能なメソッドはありません。

Dplyrを再インストールしましたが、それでも機能しませんでした。

例えば:

dataset$Nationality consists of c("Swiss", "French","German","Swiss")

その後

count(dataset$Nationality) 

のようなものを与えるでしょう

Swiss,2, French, 1, German,1

誰かが私にそれを再び機能させるために何ができるかを教えてもらえますか?

どうもありがとう!

9
thixio

これがあなたの質問に答えることを願っています。

「plyr」ライブラリを使用している場合library(plyr)

正しい構文:count(dataset$Nationality)

「dplyr」ライブラリを使用している場合library(dplyr)

正しい構文:count(dataset, Nationality)

両方を使用している場合は、最後に追加したライブラリの構文を使用する必要があります。

Dzejの提案を追加:

特定のライブラリを使用することもできます。

Dplyrを直接使用する構文:dplyr::count(dataset, Nationality)

Plyrを直接使用する構文:plyr::count(dataset$Nationality)

15
Ankit Gupta

Ankit Guptaの回答によると:

Plyrとdplyrの両方を使用している場合は、library_name :: function_name(params)を指定して、特定のライブラリの関数を使用できます。例:

plyr::count(dataset$nationality)
5
Dzej Bi

私が感じることを書くことは、Ankitとaosmithが言ったことを組み合わせてそれに追加する、より完全な答えです。

dplyrパッケージのcount()は、2つの異なるコンテキストから呼び出すことができます。 1つ目はaosmithとAnkitが提案したもので、最初の引数としてデータフレームを使用してcount()を呼び出し、その後にカウントする変数をコンマで区切って指定します。

_count(df, var1)
_

または

_count(df, var1, var2)
_

これを実行できる2番目の方法は、Rパイプ(_%>%_)を使用してデータフレームをcount()に渡すことです。

_df %>% count(var1)
_

または

_df %>% count(var1, var2)
_

どちらかのコンテキストでデータフレームを提供しないと、「該当するメソッドがありません」というエラーが質問に表示されます。

4
Ethan Hohensee

count()内でgroup_by(...) %>% summarise(...)を誤用すると、このエラーが発生します

たとえば、次のコードはエラーを生成します。

_ufo_tibble %>% 
  group_by(state) %>% 
  summarize(number_sightings = count(`duration (seconds)`))
_

count()dplyr::count(..., ..., [...])およびplyr::count(...)内)は「値カウント」を生成します。値のリストと、ベクトル内の個別の値の頻度。 (vsベクトルの長さを示す単一の数値)

この場合、代わりにn() "要約関数"が必要でした(詳細は summariseのドキュメント

_ufo_tibble %>% 
  group_by(state) %>% 
  summarize(number_sightings = n())
_
0
The Red Pea