汇总R中的类别

时间:2014-03-10 18:01:16

标签: r aggregate

嗨,我是R的新手,我正在尝试聚合列表并计算总数,但不知道该怎么做。

myList =c("A", "B", "A", "A", "B")

我可以创建一个循环遍历列表的函数,并对每个类别进行分组并对其进行计数。但我确信必须有一种更简单的方法来分组,以便我可以获得每个类别的类别和数量。那是A将是3而B将是2。

我尝试使用下面的功能,但我相信我没有正确的语法。

aggr <-aggregate(myList, count)

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

猜测您只是在寻找table而不是aggregate

myList =c("A", "B", "A", "A", "B")
table(myList)
# myList
# A B 
# 3 2

tapply在这里也很方便:

tapply(myList, myList, length)
# A B 
# 3 2

而且,我想你可以通过以下方式“欺骗”aggregate

aggregate(ind ~ myList, data.frame(myList, ind = 1), length)
#   myList ind
# 1      A   3
# 2      B   2

如果您还想了解为什么aggregate通常会将data.frame作为输入,并指定要汇总的一个或多个列。一个或多个其他列(或工作空间中与行数长度相同的向量)。

在上面的示例中,我将您的矢量转换为data.frame,添加了一个虚拟列,其中所有值均为“1”。然后我使用了公式ind ~ myList(其中~有点像“被分组”)并将聚合函数设置为length(基数R中没有count ,虽然该功能可以在不同的包中找到)。