##chargement des packages----
library(questionr)
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.1     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ ggplot2   3.4.2     ✔ tibble    3.2.1
## ✔ lubridate 1.9.2     ✔ tidyr     1.3.0
## ✔ purrr     1.0.1     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(tableone)
library(labelled)
library(gtsummary)
## #BlackLivesMatter
library(GGally)
## Registered S3 method overwritten by 'GGally':
##   method from   
##   +.gg   ggplot2
library(readxl)
library(effects)
## Le chargement a nécessité le package : carData
## lattice theme set by effectsTheme()
## See ?effectsTheme for details.
library(survival)
library(survminer)
## Le chargement a nécessité le package : ggpubr
## 
## Attachement du package : 'survminer'
## 
## L'objet suivant est masqué depuis 'package:survival':
## 
##     myeloma
library(ggplot2)
library(dplyr)
library(knitr)
library(cowplot)
## 
## Attachement du package : 'cowplot'
## 
## L'objet suivant est masqué depuis 'package:ggpubr':
## 
##     get_legend
## 
## L'objet suivant est masqué depuis 'package:lubridate':
## 
##     stamp
##chargement des données 

data_leila <- read_excel("~/FAC/2024-2025/theses/leila/data_leila.xlsx")
## New names:
## • `tgp` -> `tgp...56`
## • `tgp` -> `tgp...57`
data_beam<-filter(data_leila, c(patientcohorte==1))


##recodage des variables et bases de données le cas échéant----
data_beam$surpoids<-ifelse(data_beam$imc>25, 1, 0)
data_beam$old65<-ifelse(data_beam$age>65, 1, 0)
data_beam$ligne_cat2<-ifelse(data_beam$nombre_de_ligne_antérieur>1, 1, 0)
data_beam$ligne_cat3<-ifelse(data_beam$nombre_de_ligne_antérieur>2, 1, 0)
data_beam$ligne_cat4<-ifelse(data_beam$nombre_de_ligne_antérieur>3, 1, 0)


##renommer des variables pour présentation dans les tableaux de résultats
library(labelled)
var_label(data_beam$old65) <- "Patients de + de 65 ans"
var_label(data_beam$surpoids) <- "Patients avec IMC >25"
var_label(data_beam$obesite) <- "Patients avec IMC >30"
var_label(data_beam$poids_chimio_avant_conditionnement) <- "Poids"
var_label(data_beam$surface_corporelle) <- "Surface corporelle calculée"
var_label(data_beam$sc_utilisee_si_capee) <- "Surface corporelle utilisée pour calcul des doses"
var_label(data_beam$oms.cat) <- "Score OMS 0 vs 1 et +"
var_label(data_beam$pathologie) <- "Type d'hémopathie"
var_label(data_beam$nombre_de_ligne_antérieur) <- "Nombre de lignes antérieures"
var_label(data_beam$ligne_cat2) <- "1 ligne anterieure et +"
var_label(data_beam$ligne_cat3) <- "2 lignes anterieures et +"
var_label(data_beam$ligne_cat4) <- "3 lignes anterieures et +"
var_label(data_beam$reponse_maladie_avant_beam) <- "Statut réponse avant autogreffe"
var_label(data_beam$conditionnement_utilise) <- "Protocole intensification"
var_label(data_beam$hb) <- "Hb avant BEAM (g/dl)"
var_label(data_beam$plaquettes) <- "Taux de plaquettes avant BEAM (G/l)"
var_label(data_beam$leucocyte) <- "GB avant BEAM (g/dl)"
var_label(data_beam$pnn) <- "PNN avant BEAM (G/l)"
var_label(data_beam$foie_sans_anomalie) <- "Bilan hépatique sans anomalie"
var_label(data_beam$rein_sans_anomalie) <- "Bilan rénal sans anomalie"
var_label(data_beam$transfusion_cg) <- "Patients avec trasnfusion CG"
var_label(data_beam$transfusion_cp) <- "Patients avec trasnfusion CP"
var_label(data_beam$gcsf) <- "Patients avec G_CSF"
var_label(data_beam$duree_leucopenie_grade3) <- "Durée de Leucopénie Grade_3 postBEAM"
var_label(data_beam$duree_leucopenie_grade4) <- "Durée de Leucopénie Grade_4 postBEAM"

##création de variables à plusieurs catégorie selon valeurs variable continue

#na


##tableau descriptif patients selon obesite ----
tbl_summary(
  data_beam, include = c("age", 
                         "old65",
                          "sexe", 
                          "poids_chimio_avant_conditionnement", 
                         "surpoids",
                          "surface_corporelle",
                          "sc_utilisee_si_capee",
                          "oms.cat",
                          "pathologie"
                         ),
  by="obesite", 
  digits=all_categorical()~ c(0,1)
)%>%
  add_p(
    pvalue_fun = scales::label_pvalue(accuracy = .001)
  )%>%
  add_overall(last = TRUE)
## Warning for variable 'poids_chimio_avant_conditionnement':
## simpleWarning in wilcox.test.default(x = DATA[[1L]], y = DATA[[2L]], ...): impossible de calculer la p-value exacte avec des ex-aequos
## Warning for variable 'surface_corporelle':
## simpleWarning in wilcox.test.default(x = DATA[[1L]], y = DATA[[2L]], ...): impossible de calculer la p-value exacte avec des ex-aequos
## Warning for variable 'sc_utilisee_si_capee':
## simpleWarning in wilcox.test.default(x = DATA[[1L]], y = DATA[[2L]], ...): impossible de calculer la p-value exacte avec des ex-aequos
Characteristic 0, N = 331 1, N = 331 p-value2 Overall, N = 661
age 56 (38, 64) 56 (45, 58) 0.868 56 (42, 63)
Patients de + de 65 ans 6 (18.2%) 5 (15.2%) 0.741 11 (16.7%)
sexe 0.800
    F 13 (39.4%) 12 (36.4%) 25 (37.9%)
    M 20 (60.6%) 21 (63.6%) 41 (62.1%)
Poids 70 (63, 77) 96 (89, 105) <0.001 84 (70, 96)
Patients avec IMC >25 12 (36.4%) 33 (100.0%) <0.001 45 (68.2%)
Surface corporelle calculée 1.83 (1.75, 1.91) 2.10 (1.98, 2.30) <0.001 1.96 (1.82, 2.10)
    Unknown 1 0 1
Surface corporelle utilisée pour calcul des doses 1.83 (1.71, 1.90) 2.00 (1.98, 2.00) <0.001 1.95 (1.81, 2.00)
Score OMS 0 vs 1 et + 11 (34.4%) 16 (51.6%) 0.167 27 (42.9%)
    Unknown 1 2 3
Type d'hémopathie 0.131
    L hodgkin 14 (42.4%) 8 (24.2%) 22 (33.3%)
    L_plasmablastique 1 (3.0%) 0 (0.0%) 1 (1.5%)
    LBDGC 7 (21.2%) 12 (36.4%) 19 (28.8%)
    LF 1 (3.0%) 2 (6.1%) 3 (4.5%)
    lnh manteau 6 (18.2%) 10 (30.3%) 16 (24.2%)
    LT anaplasique 2 (6.1%) 0 (0.0%) 2 (3.0%)
    LTAI 2 (6.1%) 0 (0.0%) 2 (3.0%)
    Poppema 0 (0.0%) 1 (3.0%) 1 (1.5%)
1 Median (IQR); n (%)
2 Wilcoxon rank sum exact test; Pearson’s Chi-squared test; Wilcoxon rank sum test; Fisher’s exact test
##tableau descriptif traitements selon obesite ----
tbl_summary(
  data_beam, include = c("conditionnement_utilise", 
                         "nombre_de_ligne_antérieur",
                         "ligne_cat2", 
                         "ligne_cat3", 
                         "ligne_cat4",
                         "reponse_maladie_avant_beam",
                         "gcsf",
  ),
  by="obesite", 
  digits=all_categorical()~ c(0,1)
)%>%
  add_p(
    pvalue_fun = scales::label_pvalue(accuracy = .001)
  )%>%
  add_overall(last = TRUE)
## There was an error in 'add_p()/add_difference()' for variable 'gcsf', p-value omitted:
## Error in stats::chisq.test(x = structure(c(1, 1, 1, NA, 1, 1, 1, 1, 1, : 'x' et 'y' doivent avoir au moins 2 niveaux
Characteristic 0, N = 331 1, N = 331 p-value2 Overall, N = 661
Protocole intensification 0.159
    BEAM 5 jours 11 (33.3%) 6 (18.2%) 17 (25.8%)
    BEAM 6 jours 22 (66.7%) 27 (81.8%) 49 (74.2%)
Nombre de lignes antérieures 0.507
    1 8 (24.2%) 11 (33.3%) 19 (28.8%)
    2 18 (54.5%) 11 (33.3%) 29 (43.9%)
    3 5 (15.2%) 6 (18.2%) 11 (16.7%)
    4 1 (3.0%) 3 (9.1%) 4 (6.1%)
    5 1 (3.0%) 2 (6.1%) 3 (4.5%)
1 ligne anterieure et + 25 (75.8%) 22 (66.7%) 0.415 47 (71.2%)
2 lignes anterieures et + 7 (21.2%) 11 (33.3%) 0.269 18 (27.3%)
3 lignes anterieures et + 2 (6.1%) 5 (15.2%) 0.427 7 (10.6%)
Statut réponse avant autogreffe 0.641
    NR 5 (15.2%) 1 (3.0%) 6 (9.1%)
    RC 4 (12.1%) 5 (15.2%) 9 (13.6%)
    RC1 7 (21.2%) 5 (15.2%) 12 (18.2%)
    RC2 12 (36.4%) 13 (39.4%) 25 (37.9%)
    RC3 4 (12.1%) 6 (18.2%) 10 (15.2%)
    RP 0 (0.0%) 1 (3.0%) 1 (1.5%)
    RP4 1 (3.0%) 1 (3.0%) 2 (3.0%)
    RP5 0 (0.0%) 1 (3.0%) 1 (1.5%)
Patients avec G_CSF 32 (100.0%) 28 (100.0%) 60 (100.0%)
    Unknown 1 5 6
1 n (%)
2 Pearson’s Chi-squared test; Fisher’s exact test
##tableau descriptif bilans bio selon obesite ----
tbl_summary(
  data_beam, include = c("foie_sans_anomalie", 
                         "rein_sans_anomalie",
                         "hb", 
                         "plaquettes", 
                         "leucocyte",
                         "pnn",
  ),
  by="obesite", 
  digits=all_categorical()~ c(0,1)
)%>%
  add_p(
    pvalue_fun = scales::label_pvalue(accuracy = .001)
  )%>%
  add_overall(last = TRUE)
## Warning for variable 'hb':
## simpleWarning in wilcox.test.default(x = DATA[[1L]], y = DATA[[2L]], ...): impossible de calculer la p-value exacte avec des ex-aequos
## Warning for variable 'plaquettes':
## simpleWarning in wilcox.test.default(x = DATA[[1L]], y = DATA[[2L]], ...): impossible de calculer la p-value exacte avec des ex-aequos
## Warning for variable 'leucocyte':
## simpleWarning in wilcox.test.default(x = DATA[[1L]], y = DATA[[2L]], ...): impossible de calculer la p-value exacte avec des ex-aequos
## Warning for variable 'pnn':
## simpleWarning in wilcox.test.default(x = DATA[[1L]], y = DATA[[2L]], ...): impossible de calculer la p-value exacte avec des ex-aequos
Characteristic 0, N = 331 1, N = 331 p-value2 Overall, N = 661
Bilan hépatique sans anomalie 12 (36.4%) 7 (21.9%) 0.199 19 (29.2%)
    Unknown 0 1 1
Bilan rénal sans anomalie 24 (72.7%) 23 (69.7%) 0.786 47 (71.2%)
Hb avant BEAM (g/dl) 11.10 (10.20, 12.20) 11.60 (10.40, 12.80) 0.308 11.35 (10.40, 12.50)
Taux de plaquettes avant BEAM (G/l) 199 (160, 261) 212 (180, 265) 0.870 212 (161, 262)
    Unknown 0 1 1
GB avant BEAM (g/dl) 5.39 (4.66, 6.84) 6.55 (5.09, 7.78) 0.168 5.91 (4.69, 7.32)
PNN avant BEAM (G/l) 3.40 (2.70, 4.30) 4.50 (3.40, 5.50) 0.047 4.05 (2.80, 5.38)
1 n (%); Median (IQR)
2 Pearson’s Chi-squared test; Wilcoxon rank sum test
##tableau descriptif toxicités selon obesite ----
tbl_summary(
  data_beam, include = c("transfusion_cg", 
                         "transfusion_cp",
                         "duree_leucopenie_grade3", 
                         "duree_leucopenie_grade4", 
  ),
  by="obesite", 
  digits=all_categorical()~ c(0,1)
)%>%
  add_p(
    pvalue_fun = scales::label_pvalue(accuracy = .001)
  )%>%
  add_overall(last = TRUE)
## Warning for variable 'transfusion_cg':
## simpleWarning in stats::chisq.test(x = structure(c(1, 1, 1, 1, 1, 1, 1, 1, 1, : L’approximation du Chi-2 est peut-être incorrecte
## Warning for variable 'duree_leucopenie_grade3':
## simpleWarning in wilcox.test.default(x = DATA[[1L]], y = DATA[[2L]], ...): impossible de calculer la p-value exacte avec des ex-aequos
## Warning for variable 'duree_leucopenie_grade4':
## simpleWarning in wilcox.test.default(x = DATA[[1L]], y = DATA[[2L]], ...): impossible de calculer la p-value exacte avec des ex-aequos
Characteristic 0, N = 331 1, N = 331 p-value2 Overall, N = 661
Patients avec trasnfusion CG 27 (84.4%) 26 (83.9%) 0.956 53 (84.1%)
    Unknown 1 2 3
Patients avec trasnfusion CP 31 (93.9%) 32 (100.0%) 0.492 63 (96.9%)
    Unknown 0 1 1
Durée de Leucopénie Grade_3 postBEAM 11.0 (9.0, 13.0) 10.0 (8.0, 12.0) 0.548 10.0 (8.2, 12.0)
Durée de Leucopénie Grade_4 postBEAM 8.00 (7.00, 9.00) 8.00 (7.00, 9.00) 0.902 8.00 (7.00, 9.00)
1 n (%); Median (IQR)
2 Pearson’s Chi-squared test; Fisher’s exact test; Wilcoxon rank sum test
##Analyse des facteurs de risques de neutropénie grade 3
#Analyse univariée 
data_beam |>
  tbl_uvregression(
    y = duree_leucopenie_grade3,
    include = c(sexe, age, old65, ligne_cat2, ligne_cat3, ligne_cat4, obesite, surpoids,
                sc_utilisee_si_capee, gcsf, oms.cat ),
    method = glm,
    pvalue_fun = scales::label_pvalue(accuracy = .001),
    exponentiate = TRUE
  ) |> 
  bold_labels()
Characteristic N exp(Beta) 95% CI1 p-value
age 66 1.00 0.94, 1.06 0.889
sexe 66
    F
    M 0.15 0.03, 0.67 0.016
Patients avec IMC >30 66 0.76 0.16, 3.60 0.732
Surface corporelle utilisée pour calcul des doses 66 0.19 0.01, 3.39 0.260
Score OMS 0 vs 1 et + 63 4.09 0.85, 19.7 0.085
Patients avec G_CSF 60
Patients avec IMC >25 66 2.07 0.39, 10.9 0.394
Patients de + de 65 ans 66 2.35 0.29, 18.7 0.423
1 ligne anterieure et + 66 2.18 0.40, 12.0 0.373
2 lignes anterieures et + 66 1.89 0.33, 10.8 0.474
3 lignes anterieures et + 66 3.33 0.27, 40.9 0.350
1 CI = Confidence Interval