我正在处理简单的问题,但无法找到如何在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
更新
答案 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