使用dplyr按组计算行数
我使用的是使用dplyr按组计算行数,r,dplyr,count,plyr,R,Dplyr,Count,Plyr,我使用的是mtcars数据集。我想找到特定数据组合的记录数。类似于SQL中的count(*)groupby子句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 len
mtcars
数据集。我想找到特定数据组合的记录数。类似于SQL中的count(*)
groupby子句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
length(cyl)
1 32
使用此代码
library(dplyr)
g <- group_by(mtcars, cyl, gear)
summarise(g, length(gear))
我找到了各种可以传递给summary()
的函数,但似乎没有一个适合我。我找到的一个函数是sum(G)
,它返回
Error in eval(expr, envir, enclos) : object 'G' not found
尝试使用n()
,返回
Error in n() : This function should not be called directly
我做错了什么?如何让
groupby()
/summary()
为我工作?另一种方法是使用双冒号:
mtcars %>%
dplyr::group_by(cyl, gear) %>%
dplyr::summarise(length(gear))
另一种方法是使用双冒号:
mtcars %>%
dplyr::group_by(cyl, gear) %>%
dplyr::summarise(length(gear))
另一个选项,不一定更优雅,但不需要参考特定列:
mtcars %>%
group_by(cyl, gear) %>%
do(data.frame(nrow=nrow(.)))
另一个选项,不一定更优雅,但不需要参考特定列:
mtcars %>%
group_by(cyl, gear) %>%
do(data.frame(nrow=nrow(.)))
dplyr中有一个特殊函数
n()
,用于计算行数(可能在组内):
但dplyr还提供了一个方便的count
功能,该功能与较少的键入操作完全相同:
count(mtcars, cyl, gear) # or mtcars %>% count(cyl, gear)
#Source: local data frame [8 x 3]
#Groups: cyl [?]
#
# cyl gear n
# (dbl) (dbl) (int)
#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
dplyr中有一个特殊函数
n()
,用于计算行数(可能在组内):
但dplyr还提供了一个方便的count
功能,该功能与较少的键入操作完全相同:
count(mtcars, cyl, gear) # or mtcars %>% count(cyl, gear)
#Source: local data frame [8 x 3]
#Groups: cyl [?]
#
# cyl gear n
# (dbl) (dbl) (int)
#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
我想你要找的东西如下
cars_by_cylinders_gears <- mtcars %>%
group_by(cyl, gear) %>%
summarise(count = n())
cars\u by\u气缸\u齿轮%
组别(气缸,档位)%>%
总结(计数=n()
这是使用dplyr包。这本质上是docendo discimus提供的count()解决方案的直接版本 我想你要找的是以下内容
cars_by_cylinders_gears <- mtcars %>%
group_by(cyl, gear) %>%
summarise(count = n())
cars\u by\u气缸\u齿轮%
组别(气缸,档位)%>%
总结(计数=n()
这是使用dplyr包。这本质上是docendo discimus提供的count()解决方案的直接版本 我不能复制这个。我得到的输出与
ddply
相同。您使用的是什么版本的dplyr?尝试更新?我有最新版本0.1.3。你有0.1.2吗?没有。你的例子在0.1.3中对我来说很好。你有什么版本的R?这会导致行为上的差异吗?我也在家里的一台使用Ubuntu的电脑上试过这个,同样的东西…谢谢!!!这就解决了问题。如果我同时附上了plyr和dplyr软件包,总结就不能像预期的那样工作。一旦我重新启动会话(默认情况下没有附加所有正常的包),我就能够让它工作了。呸,我不能复制这个。我得到的输出与ddply
相同。您使用的是什么版本的dplyr?尝试更新?我有最新版本0.1.3。你有0.1.2吗?没有。你的例子在0.1.3中对我来说很好。你有什么版本的R?这会导致行为上的差异吗?我也在家里的一台使用Ubuntu的电脑上试过这个,同样的东西…谢谢!!!这就解决了问题。如果我同时附上了plyr和dplyr软件包,总结就不能像预期的那样工作。一旦我重新启动会话(默认情况下没有附加所有正常的包),我就能够让它工作了。这只是给你数据集的nrow
,而不是给你数据集的nrow
,而不是给我的组。关键的一点是,我不需要在列名周围指定引号来分组。关键的部分不是指定要分组的列名周围的引号。