嗨,我是R的新手,我正在尝试聚合列表并计算总数,但不知道该怎么做。
myList =c("A", "B", "A", "A", "B")
我可以创建一个循环遍历列表的函数,并对每个类别进行分组并对其进行计数。但我确信必须有一种更简单的方法来分组,以便我可以获得每个类别的类别和数量。那是A将是3而B将是2。
我尝试使用下面的功能,但我相信我没有正确的语法。
aggr <-aggregate(myList, count)
提前感谢您的帮助。
答案 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
,虽然该功能可以在不同的包中找到)。