按列分组,分类并计算字符串出现次数
Group by column, categorize and count string occurrences
我有一个问题,我自己无法解决;我的 table 看起来像这样:
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
应该可以满足您的需求。
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
我有一个问题,我自己无法解决;我的 table 看起来像这样:
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
应该可以满足您的需求。
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