0

这篇文章是这里这篇文章的延续。我尝试model summary按照建议使用创建回归输出表。但我遇到了一些麻烦。

# Code from the original question
library(mfx)
library(dplyr)

year <- rep(2014:2015, length.out = 10000)
group <- sample(c(0,1,2,3,4,5,6), replace=TRUE, size=10000)
value <- sample(10000, replace = T)
female <- sample(c(0,1), replace=TRUE, size=10000)
smoker <- sample(c(0,1), replace=TRUE, size=10000)
dta <- data.frame(year = year, group = group, value = value, female=female, smoker = smoker)
table_list <- dta %>%
  group_by(year, group) %>%
  group_split()

model_list <- lapply(table_list, function(x) probitmfx(smoker ~ female, data = x))

# New code
library(modelsummary)
tab <- modelsummary(model_list, output = 'flextable',
             stars = TRUE, 
             title = "Table x.", gof_omit = 'IC|Log|Adj')
tab

问题 1. 这给了我一个看起来很奇怪的表格,如下所示: 在此处输入图像描述

问题 2. 另外,我想使用 add_header 添加标头,就像您可以使用 kable 一样。我将如何在模型摘要中做到这一点?

tab %>% 
  add_header(c(" " = 2, "Donations" = 4, "Crimes (person)" = 4, "Crimes (property)" = 4))%>%
  autofit()

编辑:版本 R

This is the version platform   
x86_64-w64-mingw32          
arch           x86_64                      
os             mingw32                     
system         x86_64, mingw32             
status                                     
major          3                           
minor          6.1                         
year           2019                        
month          07                          
day            05                          
svn rev        76782                       
language       R                           
version.string R version 3.6.1 (2019-07-05)
nickname       Action of the Toes 

编辑1:

无论我设置kable还是,我都会得到相同的结果flextable。我已经更新了软件包并重新启动了计算机。

4

1 回答 1

1

重要的是要了解modelsummary它只准备回归表“结构”,并将表的“绘图”委托给外部包:、、、或kableExtra(更多包来)。gtflextablehuxtable

这很棒,因为支持的制表包非常强大,并且它们允许几乎无限的自定义。但当然,缺点是如果你想定制,你需要了解一些关于这些包的知识。有问题的软件包是非常好的文档,所以请查看他们的网站:

你的问题似乎是:

  1. 我无法R通过复制粘贴您的代码来重现您在新会话中粘贴在我的计算机上的表格。请更新您的软件包,R完全重新启动您的会话,然后重试。(你是哪个版本的R?)
  2. 你的宽度flextable太小,所以flextable插入换行符。width使用包中的命令进行修复flextable
  3. 您正在尝试使用kableExtra语法(这是 的默认输出格式modelsummary)添加一行标签,但您手动决定创建一个flextable输出。类似的功能可从add_header_rowflextable中获得。

我将使用magrittr管道来提高可读性:

library(magrittr)

kableExtra解决方案(默认modelsummary):

library(kableExtra)

modelsummary(model_list) %>%
  add_header_above(c(" " = 1, "first" = 4, "second" = 10))

flextable解决方案(您喜欢的输出格式):

library(flextable)

modelsummary(model_list, output = "flextable") %>%
  add_header_row(values = c("", "first", "second"),
                 colwidths = c(1, 4, 10)) %>%
  width(width = 10)
于 2021-02-19T14:43:01.047 回答