用表格显示绝对和相对频率

时间:2014-03-05 14:39:13

标签: r

可能有人有建议。

我正在使用knitR和tables包处理报告。函数表格生成我的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)

}

我在表格函数中输入的函数有Country和Type两个因子。

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

结果如下:

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

结果只是它如何工作的例子:)我的主要目标是一个包含两者的表:绝对和相对频率与表格。

要清除问题:这里没有函数relative的结果:

tabular(Country ~ Type, data = cars)

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

有没有人知道如何获得这张桌子?

提前致谢!

1 个答案:

答案 0 :(得分:1)

从小插图:

最后一个因素,(平均值+标准差) 命名两个R函数。假设这些是在a上运行的函数 矢量并产生单个值,如mean和sd所做的那样。表中的值 将这些函数应用于两个不同变量的结果 以及数据集的子集。

我忽略了这一部分,这是至关重要的提示,为什么我写的功能不起作用。 只要变量x具有表现形式,“relative”就会返回一个向量 - 允许的是一个原子向量。问题是现在没有办法在函数中添加基础来计算相对值 - 返回值是从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    

如果有人找到更好的解决方案 - 请帮助:)