我正在使用 gt 包制作汇总表。我想稍微简化输出,并将时间点显示为列而不是行。现在我将每个点作为单独的行,例如:
标签 | 估计 | p值 |
---|---|---|
案例时间1 | xx | xx |
控制时间1 | xx | xx |
案例时间2 | xx | xx |
控制时间2 | xx | xx |
我希望能更像这样组织它:
标签 | 时间1 | 时间2 | ||
---|---|---|---|---|
估计 | p 值 | 估计 | p 值 | |
案例 | xx | xx | xx | xx |
控制 | xx | xx | xx | xx |
我有变量“case_control”,它只是案例和控制分配,“时间”是时间点
rbind(H_LG3, W_LG3) %>%
gt()%>%
fmt_number(
columns = everything(),
decimals = 3)%>%
tab_row_group(group = md('**H**'), rows = 1:nrow(H_LG3)) %>%
tab_row_group(group = md('**W**'), rows = (nrow(H_LG3) + 1):(nrow(H_LG3) + nrow(W_LG3))%>%
cols_label(
label=md("**Label**"),
estimate_ci=md("**Estimate(CI)**"),
formatted_p_value=md("**P Value**")
)%>%
tab_header(md("**Table 4**"))
我还在这一步中合并了两个表格,但它们只是垂直堆叠并贴上标签。这些列是“标签”“estimate_ci”“p_val”“时间”和“case_control”
这是一种可能的方法:
library(tidyverse)
library(tidyselect)
library(gt)
df <- tribble(
~label, ~estimate, ~p_value,
"case time 1", 4, 21,
"control time 1", 5, 22,
"case time 2", 6, 23,
"control time 2", 7, 24
)
df %>%
separate_wider_delim(label, delim = " time ", names = c("label", "time")) %>%
pivot_wider(
names_from = time,
values_from = c(estimate, p_value),
names_glue = "time{time},{.value}"
) |>
select(sort(peek_vars())) %>%
gt() %>%
tab_spanner_delim(delim = ",")
创建于 2024-03-28,使用 reprex v2.1.0