使用 R Markdown 进行交叉制表

lud*_*udo 4 markdown r crosstab r-markdown

我很难为PDF 编织的 R Markdown文档创建一个简单漂亮的交叉表。我有一个类似于这个例子的数据集:

library(tidyverse)
fakeData <- tibble(id = c(1,2,3,4,5,6,7,8,9,10),
                   bmi = c("normal", "overweighted", "underweighted", "normal", "normal", "overweighted",
                           "normal", "overweighted", "underweighted","normal"),
                   gender = c("M", "F", "M", "M", "F", "F", "M", "F", "F", "F"))
Run Code Online (Sandbox Code Playgroud)

我想得到这样的输出:

期望输出

有没有人有一个技巧/一个已知的好包来做到这一点?非常感谢!

Wim*_*pel 7

我认为janitor-package 可以帮助你在这里...

注意:“总计”列中的百分比与您想要的输出不匹配...那是因为您在输出中混合了 colwise 和 rowwise 百分比计算.. 这真的是您想要的吗?

library( janitor )

fakeTable <- fakeData %>% 
  tabyl( gender, bmi ) %>% 
  adorn_totals( where = c("row", "col") ) %>%
  adorn_percentages("row") %>%
  adorn_pct_formatting() %>%
  adorn_ns( position = "front" ) %>%
  adorn_title("combined")

# gender/bmi    normal overweighted underweighted       Total
#          F 2 (33.3%)    3 (50.0%)     1 (16.7%)  6 (100.0%)
#          M 3 (75.0%)    0  (0.0%)     1 (25.0%)  4 (100.0%)
#      Total 5 (50.0%)    3 (30.0%)     2 (20.0%) 10 (100.0%)
Run Code Online (Sandbox Code Playgroud)

针织

library(knitr)
library(kableExtra)
fakeTable %>%
  kable() %>%
  kable_styling(bootstrap_options = c("condensed", "striped", "bordered")) 
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明