2015-01-21 14 views
0

我有一個問題,我無法自行解決;我的表看起來就像這樣:按列分類,對字符串發生進行分類和計數

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 

會真的很好,如果你能幫助我。到目前爲止,我只是找到了一種通常計算頻率的解決方案,但不能同時對我的數值進行分類。

+1

只需使用'table'? – A5C1D2H2I1M1N2O1R2T1 2015-01-21 10:48:09

回答

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)會給你剛纔列總和,而不是兩列和行。


如果不是根據自己的喜好,你可以嘗試包括splitbytapply方法:

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 
+0

感謝您的回答!我嘗試過這種解決方案,但我仍然需要將模型分配給該類型。所以我需要一個類似於標題行的東西,它包含類別和它的計數,並且在該行之後,跟隨具有特定模型的行。瞭解哪種模型屬於哪種類型仍然很重要。 @docendodiscimus:與你的回答相同的問題 – user1584400 2015-01-21 11:34:08

+0

感謝您的幫助!第二個答案是,我在找什麼 – user1584400 2015-01-21 11:48:50