##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)
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_camille <- read_excel("Y:/fp/projets études/infection a clostridium/20230312/data_camille.xlsx")
## New names:
## • `` -> `...53`
##recodage bases de données le cas échéant----

clostri<-filter(data_camille, c(eligibilite=="Oui" ))

##recodage bases de données le cas échéant----
clostri$gravite<-ifelse(clostri$score_gravite>=1, 1, 0)
clostri$complique<-ifelse(clostri$score_complication>=1, 1, 0)
clostri$r_recidive<-ifelse(clostri$score_risque_recidive>2, 1, 0)

##renommer des variables pour présentation dans les tableaux de résultats
library(labelled)
var_label(clostri$score_gravite) <- "Score de Gravité"
var_label(clostri$score_complication) <- "Score de Complication"
var_label(clostri$score_risque_recidive) <- "Score de risque de recidive"
var_label(clostri$icd_hospit) <- "Infection en cours d'hospitalisation"
var_label(clostri$premiere_icd) <- "Premiere infection"
var_label(clostri$delai_icd_hospit) <- "delai entre entrée service et infection"

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



##tableau descriptif population globales ----
tbl_summary(
  clostri, include = c("age", "sexe", "pathologie","icd_hospit","premiere_icd", "score_gravite", "score_complication", "score_risque_recidive", "traitement"),
  digits=all_categorical()~ c(0,1)
)
Characteristic N = 461
age 68 (56, 71)
sexe
    F 24 (52.2%)
    M 22 (47.8%)
pathologie
    Hématologie 29 (63.0%)
    Oncologie 17 (37.0%)
Infection en cours d'hospitalisation
    Non 10 (21.7%)
    Oui 36 (78.3%)
Premiere infection
    Non 4 (8.7%)
    Oui 42 (91.3%)
Score de Gravité
    0 23 (50.0%)
    1 17 (37.0%)
    2 5 (10.9%)
    3 1 (2.2%)
Score de Complication
    0 20 (43.5%)
    1 18 (39.1%)
    2 3 (6.5%)
    3 4 (8.7%)
    4 1 (2.2%)
Score de risque de recidive
    1 9 (19.6%)
    2 16 (34.8%)
    3 16 (34.8%)
    4 4 (8.7%)
    5 1 (2.2%)
traitement
    Fidaxomicine 10 (21.7%)
    Métronidazole IV + Vancomycine lavement intra-rectal 1 (2.2%)
    Métronidazole PO 3 (6.5%)
    Vancomycine PO 31 (67.4%)
    Vancomycine PO + Métronidazole IV 1 (2.2%)
1 Median (IQR); n (%)
##Delai de déclaration de l'infection à clostridiume lorsque infection en cours de séjour---

clostri_sejour<-filter(clostri, c(icd_hospit=="Oui" ))

tbl_summary(
  clostri_sejour, include = c("delai_icd_hospit"),
  digits=all_categorical()~ c(0,1)
)
Characteristic N = 361
delai entre entrée service et infection 9 (1, 17)
1 Median (IQR)
## taux de guerison 
tbl_summary(
  clostri, include = c("taux_guerison"),
  digits=all_categorical()~ c(0,1)
)
Characteristic N = 461
taux_guerison 38 (82.6%)
1 n (%)
##tableau descriptif population selon critère de catégorie ----
tbl_summary(
  clostri, include = c("taux_guerison"),
  by="traitement", 
  digits=all_categorical()~ c(0,1)
)%>%
  add_p()
Characteristic Fidaxomicine, N = 101 Métronidazole IV + Vancomycine lavement intra-rectal, N = 11 Métronidazole PO, N = 31 Vancomycine PO, N = 311 Vancomycine PO + Métronidazole IV, N = 11 p-value2
taux_guerison 8 (80.0%) 1 (100.0%) 2 (66.7%) 26 (83.9%) 1 (100.0%) 0.8
1 n (%)
2 Fisher’s exact test
##taux de guerison selon rechute ou primo
tbl_summary(
  clostri, include = c("taux_guerison"),
  by="premiere_icd", 
  digits=all_categorical()~ c(0,1)
)%>%
  add_p()
Characteristic Non, N = 41 Oui, N = 421 p-value2
taux_guerison 4 (100.0%) 34 (81.0%) >0.9
1 n (%)
2 Fisher’s exact test
##taux de guérison selon score de gravité
tbl_summary(
  clostri, include = c("taux_guerison"),
  by="score_gravite", 
  digits=all_categorical()~ c(0,1)
)%>%
  add_p()
Characteristic 0, N = 231 1, N = 171 2, N = 51 3, N = 11 p-value2
taux_guerison 21 (91.3%) 13 (76.5%) 3 (60.0%) 1 (100.0%) 0.3
1 n (%)
2 Fisher’s exact test
##taux de guérison selon score de gravité_binaire
tbl_summary(
  clostri, include = c("taux_guerison"),
  by="gravite", 
  digits=all_categorical()~ c(0,1)
)%>%
  add_p()
Characteristic 0, N = 231 1, N = 231 p-value2
taux_guerison 21 (91.3%) 17 (73.9%) 0.2
1 n (%)
2 Fisher’s exact test
##taux de guérison selon score de risque de complication
tbl_summary(
  clostri, include = c("taux_guerison"),
  by="score_complication", 
  digits=all_categorical()~ c(0,1)
)%>%
  add_p()
Characteristic 0, N = 201 1, N = 181 2, N = 31 3, N = 41 4, N = 11 p-value2
taux_guerison 17 (85.0%) 15 (83.3%) 3 (100.0%) 3 (75.0%) 0 (0.0%) 0.4
1 n (%)
2 Fisher’s exact test
##taux de guérison selon score de risque de complication_binaire
tbl_summary(
  clostri, include = c("taux_guerison"),
  by="complique", 
  digits=all_categorical()~ c(0,1)
)%>%
  add_p()
Characteristic 0, N = 201 1, N = 261 p-value2
taux_guerison 17 (85.0%) 21 (80.8%) >0.9
1 n (%)
2 Fisher’s exact test
##taux de guérison selon score de risque de recidive
tbl_summary(
  clostri, include = c("taux_guerison"),
  by="score_risque_recidive", 
  digits=all_categorical()~ c(0,1)
)%>%
  add_p()
Characteristic 1, N = 91 2, N = 161 3, N = 161 4, N = 41 5, N = 11 p-value2
taux_guerison 8 (88.9%) 12 (75.0%) 13 (81.2%) 4 (100.0%) 1 (100.0%) 0.8
1 n (%)
2 Fisher’s exact test
##taux de guérison selon score de risque de recidive_binaire
tbl_summary(
  clostri, include = c("taux_guerison"),
  by="r_recidive", 
  digits=all_categorical()~ c(0,1)
)%>%
  add_p()
Characteristic 0, N = 251 1, N = 211 p-value2
taux_guerison 20 (80.0%) 18 (85.7%) 0.7
1 n (%)
2 Fisher’s exact test
#Courbe de Kaplan Meier survie sans recidive----

km_pfr<-survfit(Surv(clostri$pfr, clostri$evtpfr)~1)

ggsurvplot(km_pfr, data = clostri,
           risk.table=TRUE,
           surv.scale="percent",
           break.time.by=3,
           surv.median.line = "hv"
)
## Warning in .add_surv_median(p, fit, type = surv.median.line, fun = fun, :
## Median survival not reached.

#Courbe de Kaplan Meier survie globale----

km_os<-survfit(Surv(clostri$os, clostri$evtos)~1)

ggsurvplot(km_os, data = clostri,
           risk.table=TRUE,
           surv.scale="percent",
           break.time.by=3,
           surv.median.line = "hv"
)
## Warning in .add_surv_median(p, fit, type = surv.median.line, fun = fun, :
## Median survival not reached.

#Courbe de Kaplan Meier de survie sans récidive selon populations selon score de gravité >1----

km_pfr_gravite<-survfit(Surv(pfr, evtpfr)~gravite, data=clostri)

ggsurvplot(km_pfr_gravite, data = clostri,
           risk.table=TRUE,
           surv.scale="percent",
           break.time.by=3,
           surv.median.line = "hv"
)
## Warning in .add_surv_median(p, fit, type = surv.median.line, fun = fun, :
## Median survival not reached.

#Courbe de Kaplan Meier de survie sans récidive selon populations selon guerison clinique à J10----

km_pfr_guerison<-survfit(Surv(pfr, evtpfr)~taux_guerison, data=clostri)

ggsurvplot(km_pfr_guerison, data = clostri,
           risk.table=TRUE,
           surv.scale="percent",
           break.time.by=3,
           surv.median.line = "hv"
)