使用 expss 在 R Marksdown 中格式化表格

Posted

技术标签:

【中文标题】使用 expss 在 R Marksdown 中格式化表格【英文标题】:Formatting tables in R Marksdown using expss 【发布时间】:2020-01-26 10:56:50 【问题描述】:

R Markdown 中使用expss 格式化某些表格时遇到了一些麻烦。输出是一个pdf文件。 knitr 选项是:

knitr::opts_chunk$set(echo = FALSE, message = FALSE, warning = FALSE)

按照expss 上的小插曲(可在此处获得https://cran.r-project.org/web/packages/expss/vignettes/tables-with-labels.html),我编写了以下代码:

sl_expss_long %>%  # the tibble
  calc_cro_cpct(
    cell_vars = list(br, cl, cm, fgm, vd), # rows
    col_vars = list(total(), area) # columns
  ) %>% 
  set_caption("Table 1")

这段代码在R Studio 中工作得很好,并生成了这个表:

 Table 1                                                                                    
 |                                      |              |  #Total |   Area |        |
 |                                      |              |         |  Rural |  Urban |
 | ------------------------------------ | ------------ | ------- | ------ | ------ |
 |                   Birth registration |        FALSE |    64.4 |   61.6 |   70.9 |
 |                                      |         TRUE |    35.6 |   38.4 |   29.1 |
 |                                      | #Total cases |  8207.0 | 5732.0 | 2475.0 |
 |                         Child labour |        FALSE |    50.5 |   47.0 |   64.2 |
 |                                      |         TRUE |    49.5 |   53.0 |   35.8 |
 |                                      | #Total cases |  5136.0 | 4085.0 | 1051.0 |
 |                       Child marriage |        FALSE |    98.8 |   98.6 |   99.2 |
 |                                      |         TRUE |     1.2 |    1.4 |    0.8 |
 |                                      | #Total cases | 12158.0 | 7827.0 | 4331.0 |
 | Female genitale mutilation / cutting |        FALSE |     8.2 |    7.6 |    9.3 |
 |                                      |         TRUE |    91.8 |   92.4 |   90.7 |
 |                                      | #Total cases |  9203.0 | 6144.0 | 3059.0 |
 |             Violent child discipline |        FALSE |     9.9 |   10.4 |    8.9 |
 |                                      |         TRUE |    90.1 |   89.6 |   91.1 |
 |                                      | #Total cases | 11547.0 | 7818.0 | 3729.0 |

同样,它可以在R Studio 中使用,代码如下:

sl_expss_long %>% 
  tab_cells(br, cl, cm, fgm, vd) %>%
  tab_cols(total(), area) %>% 
  tab_stat_cpct() %>%
    tab_pivot() %>% 
  set_caption("Table with summary statistics and significance marks.")

但是,当我将代码放入我的R Markdown 时,我得到以下结果:

Table with summary statistics
National
Area
Rural
Urban
Birth registration
FALSE
64.4
61.6
70.9
TRUE
35.6
38.4
29.1
#Total cases
8207

etc.

我的表格只有一列宽和三页长。

我使用panderkablekableExtra临时修复了它>

sl_expss_long %>% 
  tab_cells(br, cl, cm, fgm, vd) %>%
  tab_cols(total(label = " National| |"), area) %>% 
  tab_stat_cpct() %>%
  tab_pivot() %>% 
  set_caption("Table with summary statistics") %>% 
  split_table_to_df() %>% 
  kable(caption = "Table with summary statistics") %>% 
  kable_styling(bootstrap_options = c("striped"),
               latex_options = "hold_position") %>% 
  row_spec(1:2, bold = TRUE)

并得到这个结果:

如您所见,R Markdown 的表格在表格的开头添加了一行,并且“区域”一词应该位于“农村”和“城市”之上。这是基于我对小插图的理解是,在 R Markdown 中使用 expss 会生成我们可以在小插图中看到的表格。

对我可能遗漏的内容有什么帮助吗?

在此先感谢

马诺洛

【问题讨论】:

更新,如果我单独运行当前块,表格显示正确。因此,我认为针织选项有问题? 【参考方案1】:

你能说一下,你在编织什么样的文件?就我而言,它适用于 HTML 文档,正如小插图中所说的那样。但是对于 Word 或 PDF /Latex 文档,它不起作用,并且与问题中显示的相同。

不过,我也期待有可能在 PDF 或 Word 中拥有同样漂亮的表格。

【讨论】:

以上是关于使用 expss 在 R Marksdown 中格式化表格的主要内容,如果未能解决你的问题,请参考以下文章

如何防止 R Expss 在输出数据框中将变量名称与行标签混合?

R expss use_labels 和 dplyr 逻辑

如何在循环内正确解析expss中的(?)mdset?

R中的条件交叉表

在 R 中使用 SPSS 创建数据表

`expss` 和 `data.table` 不能一起玩