R - 如何按类别计算数据集中的行数

时间:2014-09-24 18:48:01

标签: r

我正在处理简单的问题,但无法找到如何在R中实现简单的聚合。 我希望通过以下示例在数据集中按类别(ID)计算行:

Date    Col1    Col2    ID
21/01/2003  1   2   1
27/01/2003  3   6   2
28/01/2003  4   5   2
29/01/2003  5   6   3
30/01/2003  1   0   2

我试过没有运气的*应用功能。我可以得到的最接近的答案是使用聚合函数:

aggregate(fact, by=list(fact$ID), FUN=length)

问题在于它显示数据集中的所有列,而不仅仅是ID&计数。我怎样才能做得更好。

    Group.1 Date    Col1    Col2  ID
1         1  117     117     117  117
2         2 1041    1041    1041 1041
3         3  243     243     243  243
4         4  474     474     474  474

理想情况:我想将ID重命名为Category并将Count重命名为Volume,因此它看起来像这样:

    Category Volume 
         1  117 
         2 1041 
         3  243 
         4  474 

更新

  1. 我已经安装了" plyr" &安培; " data.table"包。这两种解决方案都能很好地完成。
  2. 如何使用开箱即用R
  3. 来实现相同的解决方案

2 个答案:

答案 0 :(得分:4)

通常,当我想计算一个变量的不同值的频率时,我使用table函数而不是aggregate。您可以将table的输出传递给data.frame函数以获取所需的数据结构(我使用setNames来设置变量名称):

(counts <- setNames(data.frame(table(dat$ID)), c("Category", "Volume")))
#   Category Volume
# 1        1      1
# 2        2      3
# 3        3      1

答案 1 :(得分:2)

您可以使用count

中的plyr
> library(plyr)
> setNames(count(df, "ID"), c("Category", "Volume"))
#   Category Volume
# 1        1      1
# 2        2      3
# 3        3      1