可能有人有建议。
我正在使用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
有没有人知道如何获得这张桌子?
提前致谢!
答案 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
如果有人找到更好的解决方案 - 请帮助:)