2014-03-05 39 views
1

可能有人有建議。使用表格顯示絕對和相對頻率

我正在用knitR和表格包進行報告工作。函數表格生成我的Latex代碼。

我想要一個絕對和相對頻率的表,但我不知道如何得到它。

我試圖表格內申請一個自己的功能產生相對值:

relative <- function(x){ 
len <- length(x) 
ll <- length(table(x)) 
lev <- unique(x) 

out <- numeric(length = ll) 
for(i in 1:ll){ 
    pos <- which(x == lev[i]) 
    out[i] <- length(pos)/len*100 
} 
return(out) 

}

我把表格功能與國家和類型兩個因素的作用。

tabular(Country ~ Type*relative, data = cars) 

下面的結果:

  Type    
     PKW  SUV  
    Country relative relative 
    Germany 0   0  
    Japan 0   0  
    Other 0  NaN  
    USA  0   0 

結果是如何不工作:)我的主要目標是,既包含表只是例子:用表格的絕對和相對頻率。

要clearify的問題:相對於這裏的結果,而不功能:

tabular(Country ~ Type, data = cars) 

     Type  
Country PKW SUV 
Germany 23 1 
Japan 22 17 
Other 12 0 
USA  58 22 

有沒有人有一個想法,如何讓表?

在此先感謝!

回答

1

從暈影:

最後一個因素,(平均值±SD) 名稱兩個R的功能。假定這些函數是在 向量上運行併產生單個值的函數,如mean和sd所做的那樣。表 中的值將是將這些函數應用於兩個不同變量 和數據集的子集的結果。

我忽略了這一部分,這是至關重要的提示,爲什麼我寫的函數不起作用。 「relative」返回一個向量,只要變量x具有 - manifest是一個原子向量。現在的問題是,沒有辦法將基礎添加到函數中來計算相對值 - 返回值是從x的子集計算得出的。

其實這是工作,但不是最優雅的方式。我用硬編碼的nrow編寫了這個函數(這裏是:155)。

relative <- function(x){ 

round(length(x)/155, 2) 

} 


tabular(Country ~ Type + relative, data = cars) 

     Type    
Country PKW SUV relative 
Germany 23 1 0.15  
Japan 22 17 0.25  
Other 12 0 0.08  
USA  58 22 0.52  

如果有人找到一個更好的解決方案 - 請幫助:)