web-dev-qa-db-fra.com

R - Erreur dans UseMethod ("groups"): aucune méthode applicable pour les "groupes" appliqués à un objet de classe "character"

J'utilisais "compte" pour résumer la colonne d'un dataframe. La colonne (dataset$Nationality) comprend les nationalités pouvant apparaître plusieurs fois (par exemple, suisse, allemand, français, suisse, etc.). Cela a bien fonctionné jusqu'à ce qu'il génère aujourd'hui un message d'erreur: 

Error in UseMethod ("groups"): aucune méthode applicable pour les "groupes" appliqué à un objet de classe "caractère".

J'ai réinstallé dplyr mais cela ne fonctionnait toujours pas.

Par exemple:

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

puis

count(dataset$Nationality) 

donnerait quelque chose comme

Swiss,2, French, 1, German,1

Quelqu'un peut-il me dire ce que je pourrais faire pour que cela fonctionne à nouveau?

Merci beaucoup!

5
thixio

J'espère que ça répond à ta question.

Si vous utilisez la bibliothèque "plyr" library(plyr)

Syntaxe correcte: count(dataset$Nationality)

Si vous utilisez la bibliothèque "dplyr" library(dplyr)

Syntaxe correcte: count(dataset, Nationality)

Si vous utilisez Both, vous devrez utiliser la syntaxe de la dernière bibliothèque ajoutée.

Ajout de ce que Dzej a suggéré:

Nous pouvons également utiliser une bibliothèque spécifique.

Syntaxe pour utiliser directement dplyr: dplyr::count(dataset, Nationality)

Syntaxe pour utiliser plyr directement: plyr::count(dataset$Nationality)

8
Ankit Gupta

Ecrire ce que je ressens est une réponse plus complète qui combine ce que Ankit et Aosmith ont dit et ajoute à cela.

count() dans le package dplyr peut être appelé à partir de deux contextes différents. Le premier est ce que aosmith et Ankit ont suggéré, qui appelle count() avec le bloc de données comme premier argument, suivi de la ou des variables à compter, séparées par des virgules.

count(df, var1)

ou

count(df, var1, var2)

Pour ce faire, vous pouvez également utiliser le canal R (%>%) pour transmettre le bloc de données à count().

df %>% count(var1)

ou

df %>% count(var1, var2)

Si vous ne fournissez pas la trame de données dans l'un ou l'autre contexte, l'erreur «Aucune méthode applicable» apparaîtra dans la question.

2
Ethan Hohensee

Selon la réponse d'Ankit Gupta:

Si vous utilisez les deux méthodes, plyr et dplyr, vous pouvez utiliser la fonction de bibliothèque spécifique en fournissant nom_bibliothèque :: nom_fonction (params), par exemple:

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