Flextable:使 signif stars 加粗并删除 stars 和系数之间的 space
Flextable: make the signif stars bold and remove the space between stars and the coefficient
我正在测试 flextable
,这是 David Gohel 的 R 包,用于发布工作流,我想知道如何格式化回归表单元格中的子字符串。特别是,我的目标是复制 Stata 的 outreg2,在系数旁边用粗体显示重要的星星。
这是代表:
library(huxtable)
library(flextable)
lm(formula=mpg~cyl+hp, mtcars) %>% huxreg() %>% as_flextable()
现在,我正在尝试将重要的星星以粗体显示在系数旁边,中间没有 space。
如果有人能插话,那就太好了!我正在查看 ftExtra
,但我看不出如何解决这个问题。
谢谢!
有了 flextable,你可以很容易地通过添加一个 signif 来做到这一点。 p 值列之后的列并使用 0 填充。
以下代码演示如何从头开始:
x <- lm(formula=mpg~cyl+hp, mtcars)
library(flextable)
library(broom)
library(magrittr)
pvalue_format <- function(x){
z <- cut(x, breaks = c(-Inf, 0.001, 0.01, 0.05, 0.1, Inf), labels = c("***", "**", "*", ".", ""))
as.character(z)
}
tidy(x) %>%
flextable(
col_keys = c("term", "estimate", "std.error", "statistic", "p.value", "signif")) %>%
colformat_double(digits = 4) %>%
mk_par(j = "signif", value = as_paragraph(pvalue_format(p.value)) ) %>%
set_header_labels(term = "", estimate = "Estimate",
std.error = "Standard Error", statistic = "t value",
p.value = "Pr(>|t|)", signif = "" ) %>%
align(j = "signif", align = "left") %>%
padding(padding.right = 0, j = "p.value", part = "all") %>%
bold(j = "signif", bold = TRUE) %>%
padding(padding.left = 0, j = "signif", part = "all") %>%
autofit()
您也可以使用 flextable::as_flextable
方法并根据您的需要调整结果:
as_flextable(x) %>%
delete_part(part = "footer") %>%
padding(padding.right = 0, j = "p.value", part = "all") %>%
padding(padding.left = 0, j = "signif", part = "all") %>%
color(i = ~ p.value > .05, j = "p.value", color = "gray") %>%
theme_vanilla()
这是一种可能性:
lm(formula=mpg~cyl+hp, mtcars) |>
huxreg(
stars = c(
'__*__' = 0.05,
'__**__' = 0.01
)
) |>
set_markdown(2:6, 2, TRUE) |>
as_flextable()
这使用 markdown 来加粗星星。
flextable 可能会出错。如果是这样,您可以另存为 HTML 或 RTF 格式并转换为 Word。 (并报告错误。)
我正在测试 flextable
,这是 David Gohel 的 R 包,用于发布工作流,我想知道如何格式化回归表单元格中的子字符串。特别是,我的目标是复制 Stata 的 outreg2,在系数旁边用粗体显示重要的星星。
这是代表:
library(huxtable)
library(flextable)
lm(formula=mpg~cyl+hp, mtcars) %>% huxreg() %>% as_flextable()
现在,我正在尝试将重要的星星以粗体显示在系数旁边,中间没有 space。
如果有人能插话,那就太好了!我正在查看 ftExtra
,但我看不出如何解决这个问题。
谢谢!
有了 flextable,你可以很容易地通过添加一个 signif 来做到这一点。 p 值列之后的列并使用 0 填充。
以下代码演示如何从头开始:
x <- lm(formula=mpg~cyl+hp, mtcars)
library(flextable)
library(broom)
library(magrittr)
pvalue_format <- function(x){
z <- cut(x, breaks = c(-Inf, 0.001, 0.01, 0.05, 0.1, Inf), labels = c("***", "**", "*", ".", ""))
as.character(z)
}
tidy(x) %>%
flextable(
col_keys = c("term", "estimate", "std.error", "statistic", "p.value", "signif")) %>%
colformat_double(digits = 4) %>%
mk_par(j = "signif", value = as_paragraph(pvalue_format(p.value)) ) %>%
set_header_labels(term = "", estimate = "Estimate",
std.error = "Standard Error", statistic = "t value",
p.value = "Pr(>|t|)", signif = "" ) %>%
align(j = "signif", align = "left") %>%
padding(padding.right = 0, j = "p.value", part = "all") %>%
bold(j = "signif", bold = TRUE) %>%
padding(padding.left = 0, j = "signif", part = "all") %>%
autofit()
您也可以使用 flextable::as_flextable
方法并根据您的需要调整结果:
as_flextable(x) %>%
delete_part(part = "footer") %>%
padding(padding.right = 0, j = "p.value", part = "all") %>%
padding(padding.left = 0, j = "signif", part = "all") %>%
color(i = ~ p.value > .05, j = "p.value", color = "gray") %>%
theme_vanilla()
这是一种可能性:
lm(formula=mpg~cyl+hp, mtcars) |>
huxreg(
stars = c(
'__*__' = 0.05,
'__**__' = 0.01
)
) |>
set_markdown(2:6, 2, TRUE) |>
as_flextable()
这使用 markdown 来加粗星星。
flextable 可能会出错。如果是这样,您可以另存为 HTML 或 RTF 格式并转换为 Word。 (并报告错误。)