首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否有可能在xtable中创建多色胶乳?

是否有可能在xtable中创建多色胶乳?
EN

Stack Overflow用户
提问于 2012-12-21 04:54:24
回答 6查看 16.1K关注 0票数 37

我正在使用带有R标记的xtable和with来生成我用\input{}调用的.tex文件。虽然效果很好,但我还没有弄明白如何创建像这里这样的多颜色元素。有人知道怎么做吗?

到目前为止我使用的是:

代码语言:javascript
运行
复制
tbl <- xtable(data, align="l r r r r r")
colnames(tbl) <- c("Variable", 
                  "Mean", "Std Dev", 
                  "Mean", "Std Dev", 
                  "Difference")
caption(tbl) <- c("Table Title")
print(tbl, 
    include.rownames=FALSE,
    caption.placement="top",
    booktabs=TRUE,
    type="latex", 
    file="output.tex")

我希望在每个“平均”和“性病发展”(“治疗”和“控制”)上有一个不同的分组头。

或者,是否有更好的方法来使用R/ better来自动生成表?我不想手动编辑表,因为报表需要自动生成。

更新: @agstudy:我对latex很陌生,但我认为这是我希望用xtable (或类似于xtable)自动生成的输出:

代码语言:javascript
运行
复制
\begin{tabular}{lrrrrr}
  \toprule
      & \multicolumn{2}{c}{Treatment} & \multicolumn{2}{c}{Control} & \\
  \cmidrule(lr){2-3} \cmidrule(lr){4-5}
  Variable & Mean & Std Dev & Mean & Std Dev & Difference \\ 
  \midrule
  var1 & 1 & 2 & 3 & 4 & 5 \\ 
  \bottomrule
\end{tabular}

更新2: @乔纳森:我读了几本书才明白你的意思。我接受了你的建议,结果成功了。

在我现在使用的R标记块中:

代码语言:javascript
运行
复制
tbl <- xtable(data)
print(tbl,
    only.contents=TRUE,
    include.rownames=FALSE,
    type="latex",
    digits(tbl) <- c(0,1,1,1,1,1),
    file="output/tblout.tex")

然后在课文中,我用:

代码语言:javascript
运行
复制
\begin{tabular}{lddddd}
\toprule
    & \multicolumn{2}{c}{Treatment} & \multicolumn{2}{c}{Control} & \\
    \cmidrule(lr){2-3} \cmidrule(lr){4-5}
    Variable  &  \multicolumn{1}{r}{Mean}  &  \multicolumn{1}{r}{Std Dev}  &       \multicolumn{1}{r}{Mean}  &  \multicolumn{1}{r}{Std Dev}  &  \multicolumn{1}{r}{Difference}  \\
\midrule
\input{../output/tblout}
\bottomrule
\end{tabular}

我将看看是否有人对原生xtable (或其他包)解决方案有任何其他建议。否则,我会接受你的回答。谢谢!

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-12-21 06:03:50

假设表的形式在运行期间是相同的(即只有数字正在改变),我的建议是使用only.contents参数对print.xtable进行print.xtable并手工编写多列标题。据我所知,xtable本身无法完成多列单元格。

票数 18
EN

Stack Overflow用户

发布于 2015-02-09 22:32:25

我认为xtable中的add.to.row选项完美地实现了这一点。

这里的示例代码:

代码语言:javascript
运行
复制
require(xtable)
age <- sample(c('30-50', '50-70', '70+'), 200, replace=T)
sex <- sample(c('Male', 'Female'), 200, replace=T)
val <- table(age, sex)
val <- rbind(val, formatC(prop.table(val)*100, format='f', digits=1))
val <- structure(val, dim=c(3, 4))
val <- rbind(c('n', '%'), val)
rownames(val) <- c('', sort(unique(age)))
val <- xtable(val)


addtorow <- list()
addtorow$pos <- list(0)
addtorow$command <- paste0(paste0('& \\multicolumn{2}{c}{', sort(unique(sex)), '}', collapse=''), '\\\\')

print(val, add.to.row=addtorow, include.colnames=F)
票数 33
EN

Stack Overflow用户

发布于 2012-12-25 05:30:38

考虑使用表格包。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13984470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档