R 按列分组,对字符串出现的次数进行分类和计数

R 按列分组,对字符串出现的次数进行分类和计数,r,grouping,frequency,R,Grouping,Frequency,我有一个问题,我自己解决不了;我的桌子看起来像这样: Type Model ----------------- Car Mercedes Car BMW Plane Airbus Car BMW Car Audi Plane Boeing Plane Airbus Car Mercedes Car BMW Car 6 Mercedes 2 BMW 3 Audi 1 Plane 3 A

我有一个问题,我自己解决不了;我的桌子看起来像这样:

Type    Model
-----------------
Car     Mercedes
Car     BMW
Plane   Airbus
Car     BMW
Car     Audi
Plane   Boeing
Plane   Airbus
Car     Mercedes
Car     BMW
Car       6
Mercedes  2
BMW       3
Audi      1

Plane     3
Airbus    2
Boeing    1
我想做的是,按类型对我的模型进行分组,并对它们的频率进行聚合和计数,看起来是这样的:

Type    Model
-----------------
Car     Mercedes
Car     BMW
Plane   Airbus
Car     BMW
Car     Audi
Plane   Boeing
Plane   Airbus
Car     Mercedes
Car     BMW
Car       6
Mercedes  2
BMW       3
Audi      1

Plane     3
Airbus    2
Boeing    1

如果你能帮助我,那就太好了。到目前为止,我只是找到了一个计算频率的解决方案,但没有同时对我的值进行分类。

应该可以做你想做的事情

table(rev(x))
#           Type
# Model      Car Plane
#   Airbus     0     2
#   Audi       1     0
#   BMW        3     0
#   Boeing     0     1
#   Mercedes   2     0
您可能还对
addmargins
感兴趣:

addmargins(table(rev(x)))
#           Type
# Model      Car Plane Sum
#   Airbus     0     2   2
#   Audi       1     0   1
#   BMW        3     0   3
#   Boeing     0     1   1
#   Mercedes   2     0   2
#   Sum        6     3   9
addmargins(表(rev(x)),1)
只给出列和,而不是列和行


如果您不喜欢,您可以尝试使用
拆分
by
tapply
方法:

with(x, by(Model, Type, function(x) data.frame(addmargins(table(droplevels(x))))))
# Type: Car
#       Var1 Freq
# 1     Audi    1
# 2      BMW    3
# 3 Mercedes    2
# 4      Sum    6
# -------------------------------------------------------------------- 
# Type: Plane
#     Var1 Freq
# 1 Airbus    2
# 2 Boeing    1
# 3    Sum    3

table
应该可以满足您的需求

table(rev(x))
#           Type
# Model      Car Plane
#   Airbus     0     2
#   Audi       1     0
#   BMW        3     0
#   Boeing     0     1
#   Mercedes   2     0
您可能还对
addmargins
感兴趣:

addmargins(table(rev(x)))
#           Type
# Model      Car Plane Sum
#   Airbus     0     2   2
#   Audi       1     0   1
#   BMW        3     0   3
#   Boeing     0     1   1
#   Mercedes   2     0   2
#   Sum        6     3   9
addmargins(表(rev(x)),1)
只给出列和,而不是列和行


如果您不喜欢,您可以尝试使用
拆分
by
tapply
方法:

with(x, by(Model, Type, function(x) data.frame(addmargins(table(droplevels(x))))))
# Type: Car
#       Var1 Freq
# 1     Audi    1
# 2      BMW    3
# 3 Mercedes    2
# 4      Sum    6
# -------------------------------------------------------------------- 
# Type: Plane
#     Var1 Freq
# 1 Airbus    2
# 2 Boeing    1
# 3    Sum    3

table
应该可以满足您的需求

table(rev(x))
#           Type
# Model      Car Plane
#   Airbus     0     2
#   Audi       1     0
#   BMW        3     0
#   Boeing     0     1
#   Mercedes   2     0
您可能还对
addmargins
感兴趣:

addmargins(table(rev(x)))
#           Type
# Model      Car Plane Sum
#   Airbus     0     2   2
#   Audi       1     0   1
#   BMW        3     0   3
#   Boeing     0     1   1
#   Mercedes   2     0   2
#   Sum        6     3   9
addmargins(表(rev(x)),1)
只给出列和,而不是列和行


如果您不喜欢,您可以尝试使用
拆分
by
tapply
方法:

with(x, by(Model, Type, function(x) data.frame(addmargins(table(droplevels(x))))))
# Type: Car
#       Var1 Freq
# 1     Audi    1
# 2      BMW    3
# 3 Mercedes    2
# 4      Sum    6
# -------------------------------------------------------------------- 
# Type: Plane
#     Var1 Freq
# 1 Airbus    2
# 2 Boeing    1
# 3    Sum    3

table
应该可以满足您的需求

table(rev(x))
#           Type
# Model      Car Plane
#   Airbus     0     2
#   Audi       1     0
#   BMW        3     0
#   Boeing     0     1
#   Mercedes   2     0
您可能还对
addmargins
感兴趣:

addmargins(table(rev(x)))
#           Type
# Model      Car Plane Sum
#   Airbus     0     2   2
#   Audi       1     0   1
#   BMW        3     0   3
#   Boeing     0     1   1
#   Mercedes   2     0   2
#   Sum        6     3   9
addmargins(表(rev(x)),1)
只给出列和,而不是列和行


如果您不喜欢,您可以尝试使用
拆分
by
tapply
方法:

with(x, by(Model, Type, function(x) data.frame(addmargins(table(droplevels(x))))))
# Type: Car
#       Var1 Freq
# 1     Audi    1
# 2      BMW    3
# 3 Mercedes    2
# 4      Sum    6
# -------------------------------------------------------------------- 
# Type: Plane
#     Var1 Freq
# 1 Airbus    2
# 2 Boeing    1
# 3    Sum    3

谢谢你的回答!我尝试了这个解决方案,但是我仍然需要将模型分配给类型。因此,我需要类似于标题行的内容,其中包含类别及其计数,在该行之后,跟随具有特定模型的行。查看哪个模型属于哪个类型仍然很重要@Docendiscimus:你的回答也有同样的问题谢谢你的帮助!第二个答案是,我一直在寻找汉克斯的答案!我尝试了这个解决方案,但是我仍然需要将模型分配给类型。因此,我需要类似于标题行的内容,其中包含类别及其计数,在该行之后,跟随具有特定模型的行。查看哪个模型属于哪个类型仍然很重要@Docendiscimus:你的回答也有同样的问题谢谢你的帮助!第二个答案是,我一直在寻找汉克斯的答案!我尝试了这个解决方案,但是我仍然需要将模型分配给类型。因此,我需要类似于标题行的内容,其中包含类别及其计数,在该行之后,跟随具有特定模型的行。查看哪个模型属于哪个类型仍然很重要@Docendiscimus:你的回答也有同样的问题谢谢你的帮助!第二个答案是,我一直在寻找汉克斯的答案!我尝试了这个解决方案,但是我仍然需要将模型分配给类型。因此,我需要类似于标题行的内容,其中包含类别及其计数,在该行之后,跟随具有特定模型的行。查看哪个模型属于哪个类型仍然很重要@Docendiscimus:你的回答也有同样的问题谢谢你的帮助!第二个答案是,我在寻找什么