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

时间:2017-08-31 16:26:45

标签: r count dplyr

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

  

UseMethod(“groups”)出错:“群组”没有适用的方法   应用于“字符”类的对象。

我重新安装了dplyr,但它仍然无效。

例如:

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

然后

count(dataset$Nationality) 

会给出像

这样的东西
Swiss,2, French, 1, German,1

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

非常感谢!

4 个答案:

答案 0 :(得分:10)

希望这能回答你的问题。

如果您正在使用" plyr"图书馆library(plyr)

更正语法:count(dataset$Nationality)

如果您正在使用" dplyr"图书馆library(dplyr)

更正语法:count(dataset, Nationality)

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

添加Dzej建议:

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

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

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

答案 1 :(得分:2)

写下我的感觉是一个更完整的答案,它结合了Ankit和aosmith所说的并添加了它。

dplyr包中的

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

count(df, var1)

count(df, var1, var2)

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

df %>% count(var1)

df %>% count(var1, var2)

未能在任何一种情况下提供数据框将导致“不适用的方法”#39;在问题中看到的错误。

答案 2 :(得分:1)

根据Ankit Gupta的回答:

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

plyr::count(dataset$nationality)

答案 3 :(得分:0)

如果您在count()内误用group_by(...) %>% summarise(...),则会出现此错误

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

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

count()(在dplyr::count(..., ..., [...])plyr::count(...)中)产生“值计数”;向量中值的列表以及不同值的频率。 ( vs 单个数字表示向量的长度)

在这种情况下,我想使用n()“摘要功能”(summarise documentation中的更多信息)

ufo_tibble %>% 
  group_by(state) %>% 
  summarize(number_sightings = n())