Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
制作精美的打印表格,显示使用R_R_Ggplot2_Data Visualization_Confidence Interval - Fatal编程技术网

制作精美的打印表格,显示使用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)
    
  • 导致:

    ----------------------------------------------------------------------------
         &nbsp;       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。记者界面直观,几天后返回代码即可阅读。非常感谢。