【问题标题】:Display absolute and relative frequencies with tabular用表格显示绝对和相对频率
【发布时间】:2014-03-05 23:57:31
【问题描述】:

可能有人有建议。

我正在使用 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)

}

我放入表格函数中的函数以 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 

有人知道如何拿到桌子吗?

提前致谢!

【问题讨论】:

    标签: r


    【解决方案1】:

    来自小插曲:

    最后一个因素,(mean + sd) 命名两个 R 函数。这些被假定为在 向量并产生一个值,就像 mean 和 sd 一样。表中的值 将这些函数应用于两个不同的变量的结果 以及数据集的子集。

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

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

    【讨论】:

      猜你喜欢
      • 2018-06-05
      • 1970-01-01
      • 2020-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-24
      相关资源
      最近更新 更多