当使用summarize函数时,dplyr仅返回一行。

13

我刚刚开始尝试使用dplyr的链式操作符。

以简单的例子为例:

group_by(mtcars, cyl) %>%
summarise(mean(disp), mean(hp))

我得到了结果:

  # mean(disp) mean(hp)
  #1   230.7219 146.6875

由于某些原因,dplyr没有分组,只是汇总整个向量。我错过了什么?


这适用于所有数据框,而不仅仅是mtcars。 - Ben Rollert
我正在使用版本 .3.0.2。 - Ben Rollert
1个回答

45

开始一个新的会话,这就是我得到的:

library(dplyr)

mtcars %>%
    group_by(cyl) %>%
    summarise(mean(disp), mean(hp))

##   cyl mean(disp)  mean(hp)
## 1   4   105.1364  82.63636
## 2   6   183.3143 122.28571
## 3   8   353.1000 209.21429

编辑

不要加载plyr(在dplyr之后或者根本不加载)。问题在于它使用了plyr::summarise而不是dplyr::summarise

mtcars %>%
    group_by(cyl) %>%
    plyr::summarise(mean(disp), mean(hp))

##   mean(disp) mean(hp)
## 1   230.7219 146.6875

编辑2

您也可以明确地说明从哪个软件包中提取summarise,如下所示:

mtcars %>%
    group_by(cyl) %>%
    dplyr::summarise(mean(disp), mean(hp))

2
正确,我正在加载plyr作为我的标准库集的一部分。将在9分钟内接受您的答案。 - Ben Rollert
我需要plyr中的ldply函数,是否有类似的函数可以避免加载plyr - ismailsunni
啊,我可以在我使用需要的函数后解除它 :) - ismailsunni
1
我没有导入plyr,但它不知何故正在使用plyr。 所以,改为使用dplyr :: summarize 对我有用。 - damjad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接