制作精美的打印表格,显示使用R
我想从样本中创建一个点估计表,以便按以下格式打印制作精美的打印表格,显示使用R,r,ggplot2,data-visualization,confidence-interval,R,Ggplot2,Data Visualization,Confidence Interval,我想从样本中创建一个点估计表,以便按以下格式打印 variable group1 group2 group3 etc age 18.2 18.5 23.2 weight 125.4 130.1 117.1 etc 我也有每个点估计的置信区间,但是显示它们会导致太多的混乱。相反,我想使用文本属性(斜体、粗体、下划线、字体)来表示一行中哪个点的估计值存在显著差异。因此,在第一行中
variable group1 group2 group3 etc
age 18.2 18.5 23.2
weight 125.4 130.1 117.1
etc
我也有每个点估计的置信区间,但是显示它们会导致太多的混乱。相反,我想使用文本属性(斜体、粗体、下划线、字体)来表示一行中哪个点的估计值存在显著差异。因此,在第一行中,如果23.2与其他两行有显著差异,它将以粗体显示(例如)。我不确定这样的展示是否会令人困惑,但我想试试
有人能建议我在R中使用一个表格格式库来完成这项工作吗?也许有一种方法可以让我在数据表中为每个点估计提供文本属性?我相信你可以用xtable()包做类似的事情-如果你有xtable输出你的表,你可以使用knitr/pandoc将它转换成word、HTML等。或者你可以将LaTeX输出粘贴到一个文档中并编译它 下面是一个演示:
library(xtable)
# original data frame
df <- data.frame(var=c("age", "weight", "etc"), group1=c("18.2", "125.4", "3"), group2=c("18.5", "130.1", "3"), group3=c("23.2", "117.1", "3"), etc=c("1", "2", "3"))
# data frame in similar format indicating significance
significant <- data.frame(var=c("age", "weight", "etc"), group1=c(F, T, F), group2=c(T, F, T), group3=c(F, T, F))
library(reshape2)
# transform everything into long form to apply text formatting
df.melt <- melt(df, id.vars = 1, variable.name="group", value.name="value")
sig.melt <- melt(significant, id.vars=1, variable.name = "group", value.name="sig")
# merge datasets together
tmp <- merge(df.melt, sig.melt)
tmp$ans <- tmp$value
# apply text formatting using LaTeX functions
tmp$ans[tmp$sig] <- paste0("\\textit{", tmp$ans, "}")[tmp$sig]
# transform dataset back to "wide form" for table output
df2 <- dcast(tmp, var~group, value.var="ans")
# output table in LaTeX format
print(xtable(df2), include.rownames=FALSE, sanitize.text.function=identity)
库(xtable)
#原始数据帧
df基于所述OP的qucik演示pander
软件包:
加载它:
library(pander)
创建一些虚拟数据,这次我将从rapport
包导入这些数据:
df <- rapport::ius2008
不要拆分降价表:
panderOptions('table.split.table', Inf)
pander(t)
打印降价表:
panderOptions('table.split.table', Inf)
pander(t)
导致:
----------------------------------------------------------------------------
parents school/faculty employer self-funded other
---------------- --------- ---------------- ---------- ------------- -------
**city** 276 14 26 229 *20*
**small town** 14 1 1 11 *4*
**village** 13 1 0 13 2
----------------------------------------------------------------------------
另一种解决方案是使用FlexTable API使用ReporteRs包,并将对象发送到docx文档:
library( ReporteRs )
data = iris[45:55, ]
MyFTable = FlexTable( data = data )
MyFTable[data$Petal.Length < 3, "Species"] = textProperties( color="red"
, font.style="italic")
MyFTable[data$Sepal.Length < 5, 1:4] = cellProperties( background.color="#999999")
MyFTable[ , 1:4] = parProperties( text.align="right" )
doc.filename = "test.docx"
doc = docx( )
doc = addFlexTable( doc, MyFTable )
writeDoc( doc, file = doc.filename )
图书馆(记者)
数据=虹膜[45:55,]
MyFTable=FlexTable(数据=数据)
MyFTable[数据$Petal.Length<3,“物种”]=textProperties(color=“red”
,font.style=“italic”)
MyFTable[数据$seval.Length<5,1:4]=细胞属性(background.color=“#999999”)
MyFTable[,1:4]=参数属性(text.align=“right”)
doc.filename=“test.docx”
doc=docx()
doc=addFlexTable(doc,MyFTable)
writeDoc(doc,file=doc.filename)
您想要什么输出格式?关于软件包推荐的一般问题也不允许出现在这个网站上,只允许出现特定的编程问题。所以,如果您已经知道要使用哪个R包,那么这就更合理了。先决定你想要的是图片、tex/pdf、rtf、docx还是其他格式。我对pdf或rtf感兴趣。我希望使用ggplot2或pander。我对后者不太熟悉,但它似乎能很好地处理表格中的单元格级格式。ggplot2
只生成图像。我经常使用xtable
格式化LaTeX表,然后从中创建PDF,或者tables
包也可以这样做。也许你可以选择一个包裹,然后再问一次。谢谢。我不熟悉记者,我会调查此事。由于很多人都在使用微软产品,我在最终离开微软产品和学习如何更有效地处理它们之间左右为难。如果你不想使用MS Word或PowerPoint,可以使用html输出:as.html(MyFTable)并将其发送到knitr或shiny。记者界面直观,几天后返回代码即可阅读。非常感谢。