107

データセットを使用していmtcarsます。特定のデータの組み合わせのレコード数を知りたい。count(*)SQLの group by 句に非常に似たもの。plyrddply()からは私のために働いています

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()が、うまく機能していないようです。私が見つけた関数の 1 つは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()

4

4 に答える 4

152

n()dplyr には、行をカウントするための特別な関数があります (グループ内の可能性があります):

library(dplyr)
mtcars %>% 
  group_by(cyl, gear) %>% 
  summarise(n = n())
#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 は、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
于 2016-01-18T13:47:20.980 に答える