我有一个问题,我自己无法解决;我的表看起来像那样:
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
如果你能帮助我,真的很好。到目前为止,我只是找到了一般计算频率的解决方案,但不是同时对我的值进行分类。
答案 0 :(得分: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(table(rev(x)), 1)
会为您提供列总和,而不是列和行。
如果这不符合您的喜好,您可以尝试使用split
或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