作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我找不到一种真正直观的方法来做最基本的事情;用我的基本变量创建一个汇总表。目前我发现的最佳方法是使用 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="")
关于r - 描述性表格 - 如何创建包含数值变量和分类变量的表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8857924/
我有一个网站,我正在为所有链接使用干净的 URL。我想知道对于简短的基本 URL 与较长的描述性 URL 有何看法。 例如,如果我的网站是关于 Georgia Bulldog 足球新闻的,那么哪个网站
我一直在尝试在我们的 Node 应用程序中实现 Joi(joi 是独立的,而不是 hapi),它似乎正确地验证了模式,但错误总是一样的 [ValidationError: value must be
我是一名优秀的程序员,十分优秀!