我使用的是mtcars
数据集。我想找到特定数据组合的记录数。这与SQL中的count(*)
group by子句非常相似。ddply()
from plyr 对我来说很有效
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()
,但似乎没有一个对我有用。
Error in eval(expr, envir, enclos) : object 'G' not found
尝试使用n()
,它返回
Error in n() : This function should not be called directly
我做错了什么?我如何让group_by()
/summarise()
为我工作?
5条答案
按热度按时间yacmzcpb1#
在dplyr中有一个特殊的函数
n()
来计算行(可能在组内):但是dplyr也提供了一个方便的
count
函数,它可以用更少的输入来做同样的事情:wj8zmpe12#
我想你要找的东西如下。
这里使用的是dplyr包,本质上是docendo discimus提供的count()解决方案的手写版本。
zkure5ic3#
另一种方法是使用双冒号,因为这将有助于避免与其他包中具有类似名称的函数发生潜在冲突。
rvpgvaaj4#
另一个选项,不一定更优雅,但不需要引用特定的列:
这相当于使用
count()
:sd2nnvve5#
另一种选择是使用来自
dplyr
的函数tally。下面是一个可重复的示例:创建于2022-09-11使用reprex v2.0.2