R语言 复制具有双标题的复杂表格

46scxncf  于 2023-02-06  发布在  其他
关注(0)|答案(1)|浏览(226)

我想创建下表

地点

Alzheimer’s Disease Assessment Scale-Cognitive  = ADAS_CogT0
Rey-Osterrieth Complex Figure Test immediate recall = ROCF_IT0
Copy of Rey-Osterrieth Complex Figure test   = ROCF_CT0
Rey-Osterrieth Complex Figure Test delayed recall   = ROCf_RT0
Phonemic verbal fluency = PVF_T0
Semantic verbal fluency = SVF_T0

我已经开始如下操作数据:

library(tidyverse)
library(readxl)
library(rms)
library(lme4)
library(flextable)
library(gtsummary)
library(data.table)
library(plotrix)
library(purrr)

out <db %>% 
  mutate(GROUP = fct_recode(GROUP, CONTROL = "CONTROLLO")) %>%
  to_long(keys  = c("tests0", "tests7"),
          values =c("score0", "score7"),
          grep("T0$", names(.), value = TRUE), 
          grep("T7$", names(.), value = TRUE)) %>%
  as_tibble %>%
  mutate(Gender = factor(Gender, levels = c(1, 0), labels = c("M", "F")),
         across(c(tests0, tests7), factor))
  
out1 <- out %>%   
  group_by(tests0, GROUP) %>%
  filter(GROUP == 'TRAINING') %>% 
  summarise(mean0 = mean(score0, na.rm = T),
            stderr0 = std.error(score0, na.rm = T), 
            mean7 = mean(score7, na.rm = T), 
            stederr7 = std.error(score7, na.rm = T),
            diff.std.mean = t.test(score0, score7, paired = T)$estimate, 
            p.value = t.test(score0, score7, paired = T)$p.value  
  ) %>% 
  ungroup()

out2 <-  out %>% 
  group_by(tests0, GROUP) %>% 
  filter(GROUP == 'CONTROL') %>% 
  summarise(mean0 = mean(score0, na.rm = T),
            stderr0 = std.error(score0, na.rm = T), 
            mean7 = mean(score7, na.rm = T), 
            stederr7 = std.error(score7, na.rm = T),
            diff.std.mean = t.test(score0, score7, paired = T)$estimate, 
            p.value = t.test(score0, score7, paired = T)$p.value  
  ) %>% 
  ungroup()
  
out3 <- out1 %>%
  bind_cols(out2) %>% 
  select(., -'tests0...9') %>%
  flextable()

获得该结果

我在这一点上卡住了,我有点困惑,因为我创建的组间差异的最后一列应该包含
两个平均差列的平均差,您可以在空白图片中看到,我不知道如何将其输入代码。此外,我无法创建所引用的两个标题:

TRAINING and CONTROL groups 

WITHIN AND BETWEEN GROUPS

这里的数据集

0aydgbwb

0aydgbwb1#

我无法重现您的代码,因为一些数据集丢失.
下面的例子用各种方法添加标题行。

library(palmerpenguins)
library(tidyverse)
library(flextable)
by <- c("species", "island")

tabl <- palmerpenguins::penguins %>% 
  group_by(across(all_of(by))) %>% 
  summarise(
    across(ends_with("mm"),
           list(
             mean = ~ mean(.x, na.rm = TRUE),
             median = ~ median(.x, na.rm = TRUE),
             sd = ~ sd(.x, na.rm = TRUE)
           )
           ),
    .groups = "drop"
  )

tab_header <- tibble( key = colnames(tabl)) %>% 
  separate(col = key, into = c("part", "measure", "unit", "stat"), 
           fill = "right", remove = FALSE) %>% 
  select(-unit) %>% 
  mutate(
    measure = if_else(is.na(measure), part, measure),
    stat = if_else(is.na(stat), measure, stat)
  )
tab_header

flextable(tabl) %>% 
  flextable::set_header_df(tab_header, key = "key") %>% 
  merge_h(part = "header") %>% 
  merge_at(part = "header", i = 1:3, j = 1) %>%
  merge_at(part = "header", i = 1:3, j = 2) %>%
  theme_box() %>%
  add_header_row(values = c("", "bada", "boum"), colwidths = c(1, 5, 5)) %>%
  add_header_lines(c("another way to add a row of text")) %>% 
  align(part = "header", i = seq_len(nrow_part(., part = "header")-1), align = "center")

相关问题