r - 描述性表格 - 如何创建包含数值变量和分类变量的表格

我找不到一种真正直观的方法来做最基本的事情;用我的基本变量创建一个汇总表。目前我发现的最佳方法是使用 tapply:

seed(200)
my_stats <- function(x){
    if (is.factor(x)){
        a <- table(x, useNA="no")
        b <- round(a*100/sum(a),2)

        # If binary
        if (length(a) == 2){
            ret <- paste(a[1], " (", b[1], " %)", sep="")
        }
        return(ret)
    }else{
        ret <- mean(x, na.rm=T)
        if (ret < 1){
            ret <- round(ret, 2)
        }else{
            ret <- round(ret)
        }
        return(ret)
    }
}

library(rms)
groups <- factor(sample(c("Group A","Group B"), size=51, replace=T))
a <- 3:53 
b <- rnorm(51)
c <- factor(sample(c("male","female"), size=51, replace=T))

res <- rbind(a=tapply(a, groups, my_stats),
      b=tapply(b, groups, my_stats),
      c=tapply(c, groups, my_stats))
latex(latexTranslate(res))

资源包含:

> res
  Group A     Group B       
a "28"        "28"          
b "-0.08"     "-0.21"       
c "14 (56 %)" "14 (53.85 %)"

现在这个可行了,但它看起来非常复杂而且不是最优雅的解决方案。我试图搜索如何创建描述性表格,但所有的重点都集中在 table()、prop.table()、summary() 上,仅针对单个变量或同类变量。

我的问题:是否有一个包/函数可以轻松创建美观的 latex table ?如果是这样,请提示如何获得上述结果。

谢谢!

最佳答案

如果你重写你的函数,让它总是返回一个字符串 (它有时返回一个字符串,有时返回一个数字,有时返回 NULL), 您可以在 data.frame 上调用 ddply,而无需指定所有列。

f <- function(u) {
  res <- "?" 
  if(is.factor(u) || is.character(u)) {
    u <- table(u, useNA = "no")
    if (length(u) == 0 || sum(u) == 0) { res <- "NA" }
    else { res <- sprintf( "%0.0f%%", 100 * u[1] / sum(u) ) }
  } else {
    u <- mean(u, na.rm=TRUE)
    if(is.na(u)) { res <- "NA" }
    else { res <- sprintf( ifelse( abs(u) < 1, "%0.2f", "%0.0f" ), u ) }
  }
  return( res )
}
# Same function, for data.frames
g <- function(d) do.call( data.frame, lapply(d, f) )

library(plyr)
ddply(data.frame(a,b,c), .(groups), g)

由于您需要 LaTeX 表格,您可能还想尝试以下方法,它不对数据进行分组,而是为数字变量添加迷你图直方图。

library(Hmisc)
latex(describe(d), file="")

https://stackoverflow.com/questions/8857924/

相关文章:

python-2.7 - Python None 如果检查失败

assembly - 'label' 关键字在 MASM 中如何工作?

tsql - 返回 T-SQL 中两个日期之间的月/年

php - FOS 用户包安装错误

matplotlib - 如何更改 matplotlib 3D 图轴的颜色?

objective-c - 在 objective-c 中获取颜色分量

objective-c - Ada 支持 put_line 中的变量吗?

perl - 如何测试是否在 Perl 正则表达式匹配中定义了捕获?

google-maps - 谷歌地图标记仅在 iPhone/iPad 上在特定缩放级别消失

css - 使用 CSS 选择类下面的类