Diagrame simplificate cu pachetul {flowchart}

URMĂREȘTE-NE
16,065FaniÎmi place
1,142CititoriConectați-vă

(Acest articol a fost publicat pentru prima dată pe R-posts.comși cu amabilitate a contribuit la R-bloggeri). (Puteți raporta problema legată de conținutul acestei pagini aici)


Doriți să vă distribuiți conținutul pe R-bloggeri? dați clic aici dacă aveți un blog, sau aici dacă nu aveți.

În cercetarea în domeniul sănătății, o diagramă de flux este cea mai bună modalitate de a arăta fluxul de participanți la un studiu atunci când raportează rezultatele. Dar desenarea diagramelor de flux poate fi plictisitoare de pregătit și vă poate stârni nervii.

Din fericire, există mai multe pachete în R pentru desenarea diagramelor de flux folosind abordări diferite. Problema este că programarea este în general destul de complexă, iar numerele trebuie introduse manual sau parametrizate în prealabil. Aceste diagrame pot avea probleme reproductibile, deoarece dacă datele se modifică, trebuie să schimbăm manual din nou parametrii.

Pentru a ne ușura viața, există un nou pachet {flowchart} care utilizează fluxul de lucru tidyverse, care permite crearea multor tipuri diferite de diagrame de flux în doar câțiva pași.

https://bruigtp.github.io/flowchart

Pachetul oferă un set de funcții care sunt considerate a fi combinate cu un operator de conducte ordonat (%>% sau |>) pentru a crea diferite modele de diagrame direct din baza de date a studiului. Aceste funcții sunt extrem de personalizabile și permit utilizatorului să creeze diagrame de flux reproductibile într-un mod mai ușor și mai ordonat. Acum nu mai trebuie să setăm manual parametrii diagramei de flux precum coordonatele casetei sau numerele de afișat, deoarece se adaptează automat la datele pe care le avem.

De exemplu, putem crea o diagramă a întregului flux de studiu al participanților cu acest flux de lucru simplu și ordonat:

Aici, vom descrie acești pași care sunt implicați în crearea unei diagrame de flux în acest exemplu. Vom folosi sistemul încorporat safo set de date, care vine cu pachetul, care este un set de date generat aleatoriu din Studiu clinic SAFO. Pentru mai multe informații și alte exemple, puteți vizita vigneta pachetului.

Instalarea și încărcarea pachetului

Din martie 2024, pachetul este disponibil pe CRAN:

install.packages("flowchart")

Puteți instala oricând versiunea de dezvoltare de la Github:

remotes::install_github("bruigtp/flowchart")

Inițializați diagrama de flux

Primul pas este inițializarea diagramei de flux cu funcția as_fc():

library(flowchart) 

x <- safo |> 
  as_fc(label = "Patients assessed for eligibility")

Acest lucru va crea un obiect de clasă fcclasa creată pentru acest pachet. Obiectele acestei clase constau dintr-o listă care conține setul de date împreună cu informațiile legate de diagrama de flux generată. Să o vedem pentru exemplul nostru:

List of 2
 $ data: tibble (925 × 21) (S3: tbl_df/tbl/data.frame)
 $ fc  : tibble (1 × 17) (S3: tbl_df/tbl/data.frame)
 - attr(*, "class")= chr "fc"

The data tibble aparține întregului set de date SAFO, deoarece nu am mai efectuat operațiuni:

# A tibble: 925 × 21
      id inclusion_crit exclusion_crit chronic_heart_failure expected_death_24h
                                                      
 1     1 Yes            No             No                    No                
 2     2 No             No             No                    No                
 3     3 No             No             No                    No                
 4     4 No             Yes            No                    No                
 5     5 No             No             No                    No                
 6     6 No             Yes            No                    No                
 7     7 No             No             No                    No                
 8     8 No             Yes            No                    Yes               
 9     9 No             No             No                    No                
10    10 No             No             No                    No                
# ℹ 915 more rows
# ℹ 16 more variables: polymicrobial_bacteremia ,
#   conditions_affect_adhrence , susp_prosthetic_valve_endocard ,
#   severe_liver_cirrhosis , acute_sars_cov2 ,
#   blactam_fosfomycin_hypersens , other_clinical_trial ,
#   pregnancy_or_breastfeeding , previous_participation ,
#   myasthenia_gravis , decline_part , group , itt , …

The fc tibble reprezintă informațiile din diagrama de flux generată, care conține doar o primă casetă inițială care indică numărul total de pacienți evaluați pentru eligibilitate în studiul SAFO:

# A tibble: 1 × 17
     id     x     y     n     N perc  text  type  group just  text_color text_fs
                    
1     1   0.5   0.5   925   925 100   "Pat… init  NA    cent… black            8
# ℹ 5 more variables: text_fface , text_ffamily , text_padding ,
#   bg_fill , border_color 

Desenarea organigramei

Putem folosi întotdeauna fc_draw() funcția de a desena diagrama asociată din a fc obiect:

Construirea diagramei de flux

Pentru a construi întreaga diagramă, ar trebui să combinăm cele inițializate fc obiect cu funcţiile dorite până când obţinem organigrama finală.

A doua casetă care arată pacienții excluși de la randomizare poate fi obținută folosind fc_filter() funcţie:

safo |> 
  as_fc(label = "Patients assessed for eligibility") |> 
  fc_filter(!is.na(group), label = "Randomized", show_exc = TRUE) |> 
  fc_draw()

cu show_exc = TRUE pentru a afișa și caseta cu subiectul exclus. Acum $data conţine baza de date filtrată numai pentru subiecţii randomizaţi în timp ce $fc conține informațiile pentru aceste noi casete.

Acum, putem împărți diagrama de flux în funcție de grupul de studiu, folosind fc_split() funcţie:

safo |> 
  as_fc(label = "Patients assessed for eligibility") |> 
  fc_filter(!is.na(group), label = "Randomized", show_exc = TRUE) |> 
  fc_split(group) |> 
  fc_draw()

Acum, $data conține baza de date filtrată anterior care a fost grupată după grup variabilă.

În cele din urmă, putem aplica încă de două ori fc_filter() funcție pentru a genera diagrama flux completă pe care o dorim:

safo |> 
    as_fc(label = "Patients assessed for eligibility") |> 
    fc_filter(!is.na(group), label = "Randomized", show_exc = TRUE) |> 
    fc_split(group) |> 
    fc_filter(itt == "Yes", label = "Included in intention-to-treatn population") |> 
    fc_filter(pp == "Yes", label = "Included in per-protocoln population") |> 
    fc_draw()

Ideea este de a combina aceste funcții de bază, fc_filter() şi fc_split(), în orice fel dorim să creăm organigrama dorită. Diagrama rezultată poate fi personalizată și îmbunătățită în continuare folosind fc_modify() sau combinat cu alte organigrame orizontal sau vertical folosind funcția fc_merge() şi fc_stack() funcții, respectiv. În cele din urmă, odată ce diagrama finală este desenată, aceasta poate fi exportată în formatul de imagine dorit folosind fc_export() funcţie.

Mai multe informații despre aceste caracteristici și alte exemple pot fi găsite pe site-ul web al pachetului: https://bruigtp.github.io/flowchart/.


Diagramele de flux simplificate cu pachetul {flowchart} au fost postate pentru prima dată pe 17 ianuarie 2025 la 6:16 pm.

Dominic Botezariu
Dominic Botezariuhttps://www.noobz.ro/
Creator de site și redactor-șef.

Cele mai noi știri

Pe același subiect

LĂSAȚI UN MESAJ

Vă rugăm să introduceți comentariul dvs.!
Introduceți aici numele dvs.