R - UseMethod("groups")中的错误:没有适用于"group"应用于"character"类对象的方法

thi*_*xio 8 r count dplyr

我使用"count"来总结数据帧的列.专栏(dataset$Nationality)由不止一次出现的国籍组成(例如瑞士,德国,法国,瑞士等).它工作正常,直到它今天突然产生一个错误信息:

UseMethod("groups")中的错误:对于应用于"character"类对象的"groups"没有适用的方法.

我重新安装了dplyr,但它仍然无法正常工作.

例如:

dataset$Nationality consists of c("Swiss", "French","German","Swiss")
Run Code Online (Sandbox Code Playgroud)

然后

count(dataset$Nationality) 
Run Code Online (Sandbox Code Playgroud)

会给出类似的东西

Swiss,2, French, 1, German,1
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我,我能做些什么才能让它再次发挥作用?

非常感谢!

Ank*_*pta 13

希望这能回答你的问题.

如果您使用"plyr"库 library(plyr)

正确的语法: count(dataset$Nationality)

如果您使用的是"dplyr"库 library(dplyr)

正确的语法: count(dataset, Nationality)

如果您使用的是Both,则必须使用最后添加的库的语法.

添加什么Dzej建议:

我们也可以使用特定的库.

直接使用dplyr的语法: dplyr::count(dataset, Nationality)

直接使用plyr的语法: plyr::count(dataset$Nationality)


The*_*Pea 9

count()如果您在 a 内部误用group_by(...) %>% summarise(...),您将导致此问题中描述的错误。

例如,此代码将产生错误:

tibble %>% 
  group_by(state) %>% 
  summarize(number_sightings = count(`duration (seconds)`))
Run Code Online (Sandbox Code Playgroud)

count()(indplyr::count(..., ..., [...])plyr::count(...)) 产生“值计数”;向量中的值和不同值的频率列表。(显示向量长度的单个数字相比)

在这个我的中,我想要n()“摘要函数”而不是(文档count()中的更多信息)summarise

tibble %>% 
  group_by(state) %>% 
  summarize(number_sightings = n())
Run Code Online (Sandbox Code Playgroud)


小智 6

根据 Ankit Gupta 的回答:

如果您同时使用 plyr 和 dplyr,您可以通过提供 library_name::function_name(params) 来使用特定库的函数,例如:

plyr::count(dataset$nationality)
Run Code Online (Sandbox Code Playgroud)


Eth*_*see 5

写出我的感觉是一个更完整的答案,结合了 Ankit 和 aosmith 所说的并对其进行了补充。

count()dplyr 包中的 可以从两个不同的上下文中调用。第一个是 aosmith 和 Ankit 所建议的,它count()以数据框作为第一个参数调用,然后是要计数的变量,用逗号分隔。

count(df, var1)
Run Code Online (Sandbox Code Playgroud)

或者

count(df, var1, var2)
Run Code Online (Sandbox Code Playgroud)

第二种方法是使用 R 管道 ( %>%) 将数据帧传递到count().

df %>% count(var1)
Run Code Online (Sandbox Code Playgroud)

或者

df %>% count(var1, var2)
Run Code Online (Sandbox Code Playgroud)

未能在任一上下文中提供数据框将导致问题中出现“无适用方法”错误。