【发布时间】:2014-05-11 03:57:42
【问题描述】:
我正在使用mtcars 数据集。我想查找特定数据组合的记录数。与 SQL 中的 count(*) group by 子句非常相似。 plyr 的ddply() 正在为我工作
library(plyr)
ddply(mtcars, .(cyl,gear),nrow)
有输出
cyl gear V1
1 4 3 1
2 4 4 8
3 4 5 2
4 6 3 2
5 6 4 4
6 6 5 1
7 8 3 12
8 8 5 2
使用此代码
library(dplyr)
g <- group_by(mtcars, cyl, gear)
summarise(g, length(gear))
有输出
length(cyl)
1 32
我找到了各种可以传递给summarise() 的函数,但似乎没有一个对我有用。我发现的一个函数是sum(G),它返回了
Error in eval(expr, envir, enclos) : object 'G' not found
尝试使用n(),它返回了
Error in n() : This function should not be called directly
我做错了什么?我怎样才能让group_by() / summarise() 为我工作?
【问题讨论】:
-
我无法重现这个。我得到与
ddply相同的输出。你在哪个版本的 dplyr 上?尝试更新? -
我有最新版本 0.1.3。你有 0.1.2 吗?
-
不。您的示例对我来说适用于 0.1.3。
-
你有什么版本的R?这会导致行为上的差异吗?我也在家里的一台使用 Ubuntu 的电脑上试过这个,同样的事情..
-
谢谢!!!那解决了它。如果我同时附加了 plyr 和 dplyr 包,则汇总无法按预期工作。一旦我重新启动会话(并且默认情况下没有附加所有普通包),我就能够使其工作。唷。