在R中聚合类别

在R中聚合类别,r,aggregate,R,Aggregate,嗨,我是R的新手,我正在尝试汇总一个列表并计算总数,但不知道如何做 myList =c("A", "B", "A", "A", "B") 我可以创建一个函数,在列表中循环,并对每个类别进行分组和计数。但我相信一定有一种更简单的方法来分组,这样我就可以得到每个类别的类别和编号。也就是说A是3,B是2 我尝试使用下面的函数,但我认为我没有正确的语法 aggr <-aggregate(myList, count) aggr我猜您只是在查找表,而不是实际的聚合: myList =c("A",

嗨,我是R的新手,我正在尝试汇总一个列表并计算总数,但不知道如何做

myList =c("A", "B", "A", "A", "B")
我可以创建一个函数,在列表中循环,并对每个类别进行分组和计数。但我相信一定有一种更简单的方法来分组,这样我就可以得到每个类别的类别和编号。也就是说A是3,B是2

我尝试使用下面的函数,但我认为我没有正确的语法

aggr <-aggregate(myList, count)
aggr我猜您只是在查找
,而不是实际的
聚合

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
(其中
~
有点像“按分组”),并将聚合函数设置为
长度
(基本R中没有
计数
,尽管该函数可以在不同的包中找到).

我猜您只是在查找
,而不是实际的
聚合

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
(其中
~
有点像“按分组”),并将聚合函数设置为
长度
(基本R中没有
计数
,尽管该函数可以在不同的包中找到).

我猜您只是在查找
,而不是实际的
聚合

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
(其中
~
有点像“按分组”),并将聚合函数设置为
长度
(基本R中没有
计数
,尽管该函数可以在不同的包中找到).

我猜您只是在查找
,而不是实际的
聚合

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
(其中
~
有点像“按分组”),并将聚合函数设置为
长度
(base R中没有
计数
,尽管该函数可以在不同的包中找到)。

非常感谢!这真的很有帮助谢谢你!这真的很有帮助谢谢你!这真的很有帮助谢谢你!这真的很有帮助