#Chuẩn bị package
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
library(gtsummary)
## #StandWithUkraine
library(knitr)
library(labelled)
library(compareGroups)
library(forcats)
library(janitor)
## 
## Attaching package: 'janitor'
## The following objects are masked from 'package:stats':
## 
##     chisq.test, fisher.test
pacman::p_load(naniar)
library(readxl)
## Đọc dữ liệu

setwd("~/NIHE")
GSTD_MSM_Thai_Nguyen <- read_excel("GSTD_MSM_Thai Nguyen.xlsx")
## New names:
## • `Treatment` -> `Treatment...213`
## • `Treatment` -> `Treatment...217`
data <- GSTD_MSM_Thai_Nguyen 
names(data)
##   [1] "a1"                        "a2"                       
##   [3] "year"                      "b11"                      
##   [5] "b12"                       "n001"                     
##   [7] "n002"                      "xaphuong"                 
##   [9] "n003"                      "n004"                     
##  [11] "n005"                      "n006"                     
##  [13] "c101"                      "hocvan"                   
##  [15] "cutru"                     "tinkha"                   
##  [17] "c102_th"                   "c102_nam"                 
##  [19] "c103"                      "c104"                     
##  [21] "c105"                      "c106"                     
##  [23] "c107"                      "c108_thang"               
##  [25] "c108_nam"                  "c109"                     
##  [27] "c110"                      "c111"                     
##  [29] "c112"                      "c113"                     
##  [31] "c114"                      "c117"                     
##  [33] "c120"                      "tvbcs"                    
##  [35] "sptxn"                     "c124"                     
##  [37] "c125"                      "c126"                     
##  [39] "c127"                      "c201"                     
##  [41] "loaimt_ducc"               "loaimt_tp"                
##  [43] "loaimt_heroin"             "loaimt_cansa"             
##  [45] "loaimt_thuoclac"           "loaimt_hangda"            
##  [47] "loaimt_ckichthich"         "loaimt_cgag"              
##  [49] "loaimt_keohd"              "loaimt_ketamin"           
##  [51] "loaimt_namthan"            "loaimt_cocain"            
##  [53] "loaimt_thuocat"            "loaimt_methamphe"         
##  [55] "loaimt_khac"               "loaimt_ghiro"             
##  [57] "Dungmatuy"                 "loaimt_1t_ducc"           
##  [59] "loaimt_1t_tp"              "loaimt_1t_heroin"         
##  [61] "loaimt_1t_cansa"           "loaimt_1t_thuoclac"       
##  [63] "loaimt_1t_hangda"          "loaimt_1t_ckichthich"     
##  [65] "loaimt_1t_cgag"            "loaimt_1t_keohd"          
##  [67] "loaimt_1t_ketamin"         "loaimt_1t_namthan"        
##  [69] "loaimt_1t_cocain"          "loaimt_1t_thuocat"        
##  [71] "loaimt_1t_methamphe"       "loaimt_1t_khac"           
##  [73] "loaimt_1t_ghiro"           "c202"                     
##  [75] "c203_thang"                "c203_nam"                 
##  [77] "c204"                      "c205"                     
##  [79] "c207"                      "c208"                     
##  [81] "c210"                      "c211"                     
##  [83] "chemsex"                   "loaichsex_tp"             
##  [85] "loaichsex_cansa"           "loaichsex_ckichthich"     
##  [87] "loaichsex_cgag"            "loaichsex_khd"            
##  [89] "loaichsex_cocaine"         "loaichsex_thuocat"        
##  [91] "loaichsex_thuoccd"         "loaichsex_popper"         
##  [93] "loaichsex_khac"            "loaichsex_ghiro"          
##  [95] "c213a"                     "c301a"                    
##  [97] "c301b"                     "c301c"                    
##  [99] "c301e"                     "c301f"                    
## [101] "c301g"                     "c301"                     
## [103] "c302"                      "c303"                     
## [105] "lydokxn12"                 "lydokxn12_khac"           
## [107] "lydokxn_knmn"              "lydokxn_llvxngt"          
## [109] "lydokxn_kbnxn"             "lydokxn_skqdt"            
## [111] "lydokxn_snkb"              "lydokxn_khac"             
## [113] "lydokxn_ghiro"             "noihvtddg"                
## [115] "c304"                      "c304b"                    
## [117] "chiasekq_knva"             "chiasekq_bt"              
## [119] "chiasekq_nvyt"             "chiasekq_bc"              
## [121] "chiasekq_tvgd"             "chiasekq_khac"            
## [123] "chiasekq_ghiro"            "c304a"                    
## [125] "xngtdt"                    "c304c"                    
## [127] "c304d"                     "c305c"                    
## [129] "c305d_thang"               "c305d_nam"                
## [131] "c305"                      "lydokdt_skt"              
## [133] "lydokdt_sbl"               "lydokdt_kbndt"            
## [135] "lydokdt_nlkct"             "lydokdt_csdtx"            
## [137] "lydokdt_kdt"               "lydokdt_kbhyt"            
## [139] "lydokdt_sca"               "lydokdt_dlx"              
## [141] "lydokdt_khac"              "lydokdt_ghiro"            
## [143] "ngaydt_th"                 "ngaydt_nam"               
## [145] "csdt"                      "csdt_dc"                  
## [147] "quenut"                    "giousai"                  
## [149] "metdut"                    "ngaykuttu"                
## [151] "ctuankut"                  "ngaykutth"                
## [153] "cobhyt"                    "lydokbh_kct"              
## [155] "lydokbh_ktct"              "lydokbh_sltt"             
## [157] "lydokbh_ktl"               "lydokbh_khac"             
## [159] "lydokbh_ghiro"             "nguonbh"                  
## [161] "muabh"                     "dungdt_dtt"               
## [163] "dungdt_dttm"               "lienhedt"                 
## [165] "internet"                  "lienheint"                
## [167] "taikhoan_jackd"            "taikhoan_grindr"          
## [169] "taikhoan_okcupid"          "taikhoan_hornet"          
## [171] "taikhoan_blued"            "taikhoan_scruff"          
## [173] "taikhoan_khac"             "taikhoan_ghiro"           
## [175] "covid_bktsachmp"           "covid_bcsmp"              
## [177] "covid_tvxnhiv"             "covid_tvbcs"              
## [179] "covid_methadone"           "covid_dtbenhtd"           
## [181] "covid_prep"                "covid_dtdplao"            
## [183] "covid_dtlao"               "covid_dkdthiv"            
## [185] "covid_arv"                 "c401"                     
## [187] "c401b"                     "giangmai"                 
## [189] "field1"                    "b2"                       
## [191] "b3"                        "b4"                       
## [193] "b5"                        "c115"                     
## [195] "c116"                      "c118"                     
## [197] "c119"                      "c121"                     
## [199] "c122"                      "c123"                     
## [201] "c206"                      "c209"                     
## [203] "c212"                      "c213"                     
## [205] "c305a"                     "c305b"                    
## [207] "c306"                      "c307"                     
## [209] "Recency test"              "Retest"                   
## [211] "viral load"                "VL suppressed"            
## [213] "Treatment...213"           "Ket luan/Bien luan"       
## [215] "Final results Recency"     "Ghichu_Recency"           
## [217] "Treatment...217"           "c305_PV"                  
## [219] "1/2/2024"                  "Sequence Name"            
## [221] "Subtype"                   "Subtype(%)"               
## [223] "PR Major\r\nmutations"     "PR Accessory\r\nmutations"
## [225] "ATV/r \r\nLevel"           "DRV/r \r\nLevel"          
## [227] "LPV/r \r\nLevel"           "NRTI"                     
## [229] "NNRTI"                     "ABC \r\nLevel"            
## [231] "AZT\r\nLevel"              "D4T \r\nLevel"            
## [233] "DDI\r\nLevel"              "FTC\r\nLevel"             
## [235] "3TC\r\nLevel"              "TDF\r\nLevel"             
## [237] "DOR\r\nLevel"              "EFV\r\nLevel"             
## [239] "ETR\r\nLevel"              "NVP\r\nLevel"             
## [241] "RPV\r\nLevel"              "PCR"                      
## [243] "Q15cgthanhcong"            "ARV"                      
## [245] "KhacGhiRo"                 "Check trùng"              
## [247] "record_id"                 "noisinhsong"              
## [249] "nghenghiep"                "nghenghiep_k"             
## [251] "tinhkhacn"                 "vaitro"                   
## [253] "c103a"                     "qh6th"                    
## [255] "qh1th"                     "lydochinh"                
## [257] "lydochinh_khac"            "c115a"                    
## [259] "c112n"                     "c128"                     
## [261] "c129"                      "loaimt_c201"              
## [263] "c301k"                     "c301h"                    
## [265] "c303i"                     "c303j"                    
## [267] "c306a"                     "c306b_thang"              
## [269] "c306b_nam"                 "sothang"                  
## [271] "lydokxn12a"                "lydokxn12a_ghiro"         
## [273] "lydokxn_kbmp"              "c306c"                    
## [275] "c306d_thang"               "c306d_nam"                
## [277] "c306e"                     "c306f_thang"              
## [279] "c306f_nam"                 "c307a"                    
## [281] "c307b"                     "lienhe_dt"                
## [283] "lienhe_jackd"              "lienhe_grindr"            
## [285] "lienhe_hornet"             "lienhe_heesay"            
## [287] "lienhe_fb"                 "lienhe_zalo"              
## [289] "lienhe_khac"               "lienhe_ghiro"             
## [291] "lienhe_2t"                 "ktpbdx_xalanh"            
## [293] "ktpbdx_quat"               "ktpbdx_tongtien"          
## [295] "ktpbdxyt"                  "baoluc_thechat"           
## [297] "baoluc_tinhthan"           "c201_recode"              
## [299] "c303_recode"               "datungxn_recode"          
## [301] "lienhedt_recode"           "c301c_recode"             
## [303] "muabandam_recode"          "c112_recode"              
## [305] "tinhkhac_recode"           "lienhemxh_recode"         
## [307] "datungprep_recode"
# kiểm tra dữ liệu
data %>% 
  select(where(is.numeric)) %>% 
  names()
##   [1] "a2"                   "year"                 "b11"                 
##   [4] "b12"                  "n005"                 "c101"                
##   [7] "hocvan"               "c102_th"              "c102_nam"            
##  [10] "c104"                 "c105"                 "c106"                
##  [13] "c117"                 "c120"                 "tvbcs"               
##  [16] "sptxn"                "c124"                 "c125"                
##  [19] "c126"                 "c127"                 "loaimt_ducc"         
##  [22] "loaimt_tp"            "loaimt_ckichthich"    "loaimt_khac"         
##  [25] "c202"                 "chemsex"              "loaichsex_tp"        
##  [28] "loaichsex_cansa"      "loaichsex_ckichthich" "loaichsex_cgag"      
##  [31] "loaichsex_khd"        "loaichsex_cocaine"    "loaichsex_thuocat"   
##  [34] "loaichsex_thuoccd"    "loaichsex_popper"     "loaichsex_khac"      
##  [37] "c213a"                "c301b"                "c301f"               
##  [40] "c301"                 "c302"                 "c303"                
##  [43] "lydokxn_knmn"         "lydokxn_llvxngt"      "lydokxn_kbnxn"       
##  [46] "lydokxn_skqdt"        "lydokxn_snkb"         "lydokxn_khac"        
##  [49] "c304"                 "c304a"                "xngtdt"              
##  [52] "c305c"                "c305d_thang"          "c305d_nam"           
##  [55] "c305"                 "lydokdt_skt"          "lydokdt_sbl"         
##  [58] "lydokdt_kbndt"        "lydokdt_nlkct"        "lydokdt_csdtx"       
##  [61] "lydokdt_kdt"          "lydokdt_kbhyt"        "lydokdt_sca"         
##  [64] "lydokdt_dlx"          "lydokdt_khac"         "cobhyt"              
##  [67] "lydokbh_kct"          "lydokbh_ktct"         "lydokbh_sltt"        
##  [70] "lydokbh_khac"         "c401"                 "giangmai"            
##  [73] "record_id"            "nghenghiep"           "tinhkhacn"           
##  [76] "vaitro"               "c103a"                "qh6th"               
##  [79] "qh1th"                "lydochinh"            "c115a"               
##  [82] "c112n"                "c128"                 "c129"                
##  [85] "loaimt_c201"          "c301k"                "c301h"               
##  [88] "c303j"                "c306a"                "c306b_thang"         
##  [91] "c306b_nam"            "sothang"              "lydokxn12a"          
##  [94] "lydokxn_kbmp"         "c306c"                "c306d_thang"         
##  [97] "c306d_nam"            "c306e"                "c307a"               
## [100] "c307b"                "lienhe_dt"            "lienhe_jackd"        
## [103] "lienhe_grindr"        "lienhe_hornet"        "lienhe_heesay"       
## [106] "lienhe_fb"            "lienhe_zalo"          "lienhe_khac"         
## [109] "lienhe_2t"            "ktpbdx_xalanh"        "ktpbdx_quat"         
## [112] "ktpbdx_tongtien"      "ktpbdxyt"             "baoluc_thechat"      
## [115] "baoluc_tinhthan"      "c201_recode"          "c303_recode"         
## [118] "datungxn_recode"      "lienhedt_recode"      "c301c_recode"        
## [121] "muabandam_recode"     "c112_recode"          "tinhkhac_recode"     
## [124] "lienhemxh_recode"     "datungprep_recode"
##Lọc trùng số liệu

data <- data %>%
  distinct(a1, .keep_all = TRUE)
data <- data %>% 
  select(a1, a2, year, b11, b12, n001, n002, hocvan, c101, c105, c303, c306a, c124, c129, c202, chemsex, c301k, c302, c304a, ktpbdx_xalanh, ktpbdx_quat, ktpbdx_tongtien, ktpbdxyt, muabandam_recode, lydokxn12a) 

names(data) 
##  [1] "a1"               "a2"               "year"             "b11"             
##  [5] "b12"              "n001"             "n002"             "hocvan"          
##  [9] "c101"             "c105"             "c303"             "c306a"           
## [13] "c124"             "c129"             "c202"             "chemsex"         
## [17] "c301k"            "c302"             "c304a"            "ktpbdx_xalanh"   
## [21] "ktpbdx_quat"      "ktpbdx_tongtien"  "ktpbdxyt"         "muabandam_recode"
## [25] "lydokxn12a"
gg_miss_var(data, show_pct = TRUE)

data <- data %>%
  mutate(
    c129    = if_else(is.na(c129), 0, c129),
    chemsex = if_else(is.na(chemsex), 0, chemsex),
    c202    = if_else(is.na(c202), 0, c202), # đã từng TCMT: missing cũng cho về 0 (không rõ)
    c105    = if_else(is.na(c105), 0 , c105), #"Không có quan hệ trong vòng 1 tháng"
    c304a    = if_else(is.na(c304a), 9, c304a),  # missing => 9 (không biết)
    c303    = if_else(is.na(c303), 1, c303)   # missing => 1 (không xét nghiệm)
  )

gg_miss_var(data, show_pct = TRUE)

##Tạo biến phân nhóm
data <- data %>%
  mutate(tuoi = 2024 - b12)

data <- data %>%
  mutate(
    nhom_tuoi = case_when(
      tuoi >= 16 & tuoi <= 24 ~ "16–24",
      tuoi >= 25 & tuoi <= 29 ~ "25–29",
      tuoi >= 30              ~ "30+",
      TRUE                    ~ NA_character_
    )
  )

data <- data %>%
  mutate(nhom_tuoi = factor(nhom_tuoi, levels = c("16–24", "25–29", "30+"), ordered = TRUE))
##Tạo ra biến outcome

data <- data %>%
  mutate(
    outcome = case_when(
      c303 == 3 ~ 1,
      c303 %in% c(1, 2) ~ 0,
      TRUE ~ 1
    ),
    outcome = factor(outcome,
                     levels = c(0, 1),
                     labels = c("<= 12 tháng", ">12 tháng"))
  )
## Tạo biến factor
data <- data %>% 
  mutate(across(c(nhom_tuoi, hocvan, c101, c105, c303, c306a, c124, c129, c202, chemsex, c301k, c302, c304a, ktpbdx_xalanh, ktpbdx_quat, ktpbdx_tongtien, ktpbdxyt, muabandam_recode, lydokxn12a), as.factor))
## dán nhãn cho giá trị biến
data <- data %>%
  mutate(
    lydokxn12a = fct_recode(lydokxn12a,
      "Nghĩ mình không nhiễm HIV"                  = "1",
      "Đã có KQXN HIV dương tính"                  = "2",
      "Sợ KQXN HIV dương tính"                     = "3",
      "Ngại đi làm xét nghiệm"                     = "4",
      "Đang điều trị ARV"                          = "5",
      "Không biết XN HIV là miễn phí/rẻ tiền"      = "6",
      "Lý do khác"                                 = "7"
    )
  )

data <- data %>%
  mutate(
    c101 = fct_recode(c101,
      "Chưa kết hôn và không sống chung với bạn tình"             = "1",
      "Đang có vợ"                                                 = "2",
      "Đã ly dị"                                                   = "3",
      "Đã ly thân"                                                 = "4",
      "Goá vợ"                                                     = "5",
      "Sống chung không kết hôn với bạn tình nữ"                  = "6",
      "Sống chung không kết hôn với bạn tình nam"                 = "7"
    ),
    
    c105 = fct_recode(c105,
      "Không quan hệ" = "0",
      "Tất cả các lần"     = "1",
      "Đa số các lần"      = "2",
      "Thỉnh thoảng"       = "3",
      "Không bao giờ"      = "4"
    ),
    
    c124 = fct_recode(c124,
      "Có"    = "1",
      "Không" = "2"
    ),
    
    c129 = fct_recode(c129,
      "Có"         = "1",
      "Không"      = "0",
      "Không nhớ"  = "9"
    ),
    
    c202 = fct_recode(c202,
              "Chưa bao giờ" = "2",
      "Có"            = "1",
      "Không rõ"  = "0"
    ),
    hocvan = fct_recode(hocvan,
                        "Mù chữ" = "1",
                        "Tiểu học"  = "2",
                        "Trung học cơ sở"  = "3",
                        "Trung học phổ thông" = "4",
                        "Trung cấp, CĐ, ĐH" = "5"
                          ),
    chemsex = fct_recode(chemsex,
      "Có"    = "1",
      "Không" = "0"
      ),
    
    c302 = fct_recode(c302,
      "Có"    = "1",
      "Không" = "2"
    ),
    
    c303 = fct_recode(c303,
                     "Chưa xét nghiệm" = "0",
      "Trong vòng 6 tháng"              = "1",
      "Từ trên 6 tháng đến 12 tháng"    = "2",
      "Trên 12 tháng"                   = "3"
    ),
      c306a = fct_recode(c306a,
                     "Đã từng" = "1",
      "Chưa bao giờ"  = "2"
      ),
    c304a = fct_recode(c304a,
      "Dương tính"                        = "1",
      "Âm tính"                           = "2",
      "Không biết/Không trả lời"          = "9"
    ),
    
    ktpbdx_xalanh = fct_recode(ktpbdx_xalanh,
      "Chưa bao giờ"                      = "1",
      "Có, trong vòng 6 tháng qua"        = "2",
      "Có, từ 6 tháng trở lên"            = "3",
      "Không trả lời"                     = "9"
    ),
    
    ktpbdx_quat = fct_recode(ktpbdx_quat,
      "Chưa bao giờ"                      = "1",
      "Có, trong vòng 6 tháng qua"        = "2",
      "Có, từ 6 tháng trở lên"            = "3",
      "Không trả lời"                     = "9"
    ),
    
    ktpbdx_tongtien = fct_recode(ktpbdx_tongtien,
      "Chưa bao giờ"                      = "1",
      "Có, trong vòng 6 tháng qua"        = "2",
      "Có, từ 6 tháng trở lên"            = "3",
      "Không trả lời"                     = "9"
    ),
    
    ktpbdxyt = fct_recode(ktpbdxyt,
      "Chưa bao giờ e ngại"               = "1",
      "Có, trong vòng 12 tháng qua"       = "2",
      "Có, từ 12 tháng trở lên"           = "3",
      "Không trả lời"                     = "9"
    ),
    muabandam_recode = fct_recode(muabandam_recode,
      "QHTD có nhận tiền/vật chất"             = "1",
      "QHTD có trả tiền/vật chất"              = "2",
      "Cả hai đáp án trên"                     = "3",
      "Không trao đổi tiền/vật chất"           = "4",
      "Không nhớ/Không trả lời"                = "9"),
    c301k = fct_recode(c301k,
      "Nhận PrEP hàng ngày"                      = "1",
      "Nhận PrEP tình huống (ED PrEP)"           = "2",
      "Nhận cả hai"                              = "3",
      "Chưa nhận bao giờ"                        = "4"
    )
  )

Bảng 1. Đặc điểm nhân khẩu học của đối tượng nghiên cứu

data %>% 
  select( tuoi, nhom_tuoi, hocvan, c101) %>% 
  tbl_summary(statistic = list(all_continuous() ~ "{mean} ± {sd}") 
  ) %>%
  modify_header(label ~ "**Đặc điểm**")
Đặc điểm N = 1501
Tuổi trung bình 25 ± 8
Nhóm tuổi
    16–24 93 (62%)
    25–29 27 (18%)
    30+ 30 (20%)
Trình độ học vấn
    Trung học cơ sở 4 (2.7%)
    Trung học phổ thông 27 (18%)
    Trung cấp, CĐ, ĐH 119 (79%)
Tình trạng hôn nhân
    Chưa kết hôn và không sống chung với bạn tình 126 (84%)
    Đang có vợ 12 (8.0%)
    Đã ly thân 1 (0.7%)
    Sống chung không kết hôn với bạn tình nam 11 (7.3%)
1 Mean ± SD; n (%)

Bảng 2. Đặc điểm xét nghiệm HIV của đối tượng nghiên cứu

data %>% 
  select(c105, chemsex, c124, c129, c202, muabandam_recode, c105) %>% 
  tbl_summary(statistic = list(all_continuous() ~ "{mean} ± {sd}") 
  ) %>%
  modify_header(label ~ "**Đặc điểm**")
Đặc điểm N = 1501
Tần suất sử dụng BCS với bạn tình MSM
    Không quan hệ 36 (24%)
    Tất cả các lần 75 (50%)
    Đa số các lần 18 (12%)
    Thỉnh thoảng 13 (8.7%)
    Không bao giờ 8 (5.3%)
chemsex
    Không 107 (71%)
    Có 43 (29%)
Đã từng QHTD tập thể
    Có 14 (9.3%)
    Không 136 (91%)
Sử dụng BCS - PNBD
    Không 146 (97%)
    Có 4 (2.7%)
Đã từng TCMT
    Không rõ 135 (90%)
    Chưa bao giờ 15 (10%)
Mua bán dâm
    QHTD có nhận tiền/vật chất 3 (2.0%)
    QHTD có trả tiền/vật chất 1 (0.7%)
    Không trao đổi tiền/vật chất 146 (97%)
1 n (%)

Bảng 3. Đặc điểm hành vi nguy cơ của đối tượng nghiên cứu

data %>% 
  select(outcome, lydokxn12a, c306a, c302, c304a, c301k) %>% 
  tbl_summary(statistic = list(all_continuous() ~ "{mean} ± {sd}") 
  ) %>%
  modify_header(label ~ "**Đặc điểm**")
Đặc điểm N = 1501
Thời gian xét nghiệm
    <= 12 tháng 124 (83%)
    >12 tháng 26 (17%)
Lý do chủ yếu không xét nghiệm trong 12 tháng qua
    Nghĩ mình không nhiễm HIV 13 (50%)
    Đã có KQXN HIV dương tính 4 (15%)
    Ngại đi làm xét nghiệm 8 (31%)
    Đang điều trị ARV 1 (3.8%)
    Unknown 124
Đã từng xét nghiệm HIV
    Đã từng 129 (86%)
    Chưa bao giờ 21 (14%)
Biết nơi tư vấn, xét nghiệm HIV
    Có 139 (93%)
    Không 11 (7.3%)
Biết tình trạng nhiễm HIV
    Dương tính 7 (4.7%)
    Âm tính 122 (81%)
    Không biết/Không trả lời 21 (14%)
Sử dụng PrEp
    Nhận PrEP hàng ngày 54 (36%)
    Nhận PrEP tình huống (ED PrEP) 37 (25%)
    Nhận cả hai 6 (4.0%)
    Chưa nhận bao giờ 53 (35%)
1 n (%)

Bảng 4. Đặc điểm kỳ thị phân biệt đối xử của đối tượng nghiên cứu

data %>% 
  select(ktpbdx_xalanh, ktpbdx_quat, ktpbdx_tongtien, ktpbdxyt) %>% 
  tbl_summary(statistic = list(all_continuous() ~ "{mean} ± {sd}") 
  ) %>%
  modify_header(label ~ "**Đặc điểm**")
Đặc điểm N = 1501
Bị xa lánh/bỏ rơi trong các hoạt động của gia đình
    Chưa bao giờ 149 (99%)
    Có, trong vòng 6 tháng qua 1 (0.7%)
Bị ai đó la mắng, quát
    Chưa bao giờ 147 (98%)
    Có, trong vòng 6 tháng qua 2 (1.3%)
    Có, từ 6 tháng trở lên 1 (0.7%)
Bị tống tiền
    Chưa bao giờ 150 (100%)
E ngại sử dụng các dịch vụ y tế vì lý do bị phân biệt, đối xử
    Chưa bao giờ e ngại 100 (67%)
    Có, trong vòng 12 tháng qua 4 (2.7%)
    Có, từ 12 tháng trở lên 25 (17%)
    Không trả lời 21 (14%)
1 n (%)

Bảng 5. Mối liên quan giữa đặc điểm nhân khẩu học và thời gian gần nhất xét nghiệm HIV

OR1 =createTable(compareGroups(outcome ~ nhom_tuoi + hocvan + c101,
                             data = data,
                             method=c(c306a=2), 
                             ref = 1,
                             riskratio = F,
                             byrow = T), 
               show.ratio = T,show.p.overall = F) 

export2md(OR1, width = "450px")
Summary descriptives table by groups of `Thời gian xét nghiệm’
<= 12 tháng >12 tháng OR p.ratio
N=124 N=26
Nhóm tuổi:
16–24 81 (87.1%) 12 (12.9%) Ref. Ref.
25–29 19 (70.4%) 8 (29.6%) 2.82 [0.97;7.94] 0.056
30+ 24 (80.0%) 6 (20.0%) 1.70 [0.53;4.94] 0.356
Trình độ học vấn:
Trung học cơ sở 3 (75.0%) 1 (25.0%) Ref. Ref.
Trung học phổ thông 24 (88.9%) 3 (11.1%) 0.37 [0.03;13.0] 0.513
Trung cấp, CĐ, ĐH 97 (81.5%) 22 (18.5%) 0.63 [0.07;18.7] 0.727
Tình trạng hôn nhân:
Chưa kết hôn và không sống chung với bạn tình 104 (82.5%) 22 (17.5%) Ref. Ref.
Đang có vợ 10 (83.3%) 2 (16.7%) . [.;.] .
Đã ly thân 1 (100%) 0 (0.00%) . [.;.] .
Sống chung không kết hôn với bạn tình nam 9 (81.8%) 2 (18.2%) . [.;.] .

Bảng 6. Mối liên quan giữa đặc điểm hành vi nguy cơ và thời gian gần nhất xét nghiệm HIV

OR2 =createTable(compareGroups(outcome ~ c105 + chemsex + c124 + c129 + c202 + muabandam_recode + c105,
                             data = data,
                             method=c(c306a=2), 
                             ref = 1,
                             riskratio = F,
                             byrow = T), 
               show.ratio = T,show.p.overall = F) 

export2md(OR2, width = "450px")
Summary descriptives table by groups of `Thời gian xét nghiệm’
<= 12 tháng >12 tháng OR p.ratio
N=124 N=26
Tần suất sử dụng BCS với bạn tình MSM:
Không quan hệ 29 (80.6%) 7 (19.4%) Ref. Ref.
Tất cả các lần 64 (85.3%) 11 (14.7%) 0.71 [0.25;2.14] 0.530
Đa số các lần 14 (77.8%) 4 (22.2%) 1.19 [0.26;4.80] 0.808
Thỉnh thoảng 11 (84.6%) 2 (15.4%) 0.79 [0.10;4.05] 0.792
Không bao giờ 6 (75.0%) 2 (25.0%) 1.42 [0.16;8.23] 0.722
chemsex:
Không 86 (80.4%) 21 (19.6%) Ref. Ref.
38 (88.4%) 5 (11.6%) 0.55 [0.17;1.49] 0.252
Đã từng QHTD tập thể:
12 (85.7%) 2 (14.3%) Ref. Ref.
Không 112 (82.4%) 24 (17.6%) 1.21 [0.30;8.94] 0.809
Sử dụng BCS - PNBD:
Không 120 (82.2%) 26 (17.8%) Ref. Ref.
4 (100%) 0 (0.00%) . [.;.] .
Đã từng TCMT:
Không rõ 113 (83.7%) 22 (16.3%) Ref. Ref.
Chưa bao giờ 11 (73.3%) 4 (26.7%) 1.90 [0.47;6.25] 0.339
Mua bán dâm:
QHTD có nhận tiền/vật chất 2 (66.7%) 1 (33.3%) Ref. Ref.
QHTD có trả tiền/vật chất 0 (0.00%) 1 (100%) . [.;.] .
Không trao đổi tiền/vật chất 122 (83.6%) 24 (16.4%) . [.;.] .
Tần suất sử dụng BCS với bạn tình MSM:
Không quan hệ 29 (80.6%) 7 (19.4%) Ref. Ref.
Tất cả các lần 64 (85.3%) 11 (14.7%) 0.71 [0.25;2.14] 0.530
Đa số các lần 14 (77.8%) 4 (22.2%) 1.19 [0.26;4.80] 0.808
Thỉnh thoảng 11 (84.6%) 2 (15.4%) 0.79 [0.10;4.05] 0.792
Không bao giờ 6 (75.0%) 2 (25.0%) 1.42 [0.16;8.23] 0.722

Bảng 7. Mối liên quan giữa đặc điểm kì thị và thời gian gần nhất xét nghiệm HIV

OR3 =createTable(compareGroups(outcome ~ ktpbdx_xalanh + ktpbdx_quat + ktpbdx_tongtien + ktpbdxyt,
                             data = data,
                             method=c(c306a=2), 
                             ref = 1,
                             riskratio = F,
                             byrow = T), 
               show.ratio = T,show.p.overall = F) 

export2md(OR3, width = "450px")
Summary descriptives table by groups of `Thời gian xét nghiệm’
<= 12 tháng >12 tháng OR p.ratio
N=124 N=26
Bị xa lánh/bỏ rơi trong các hoạt động của gia đình:
Chưa bao giờ 123 (82.6%) 26 (17.4%) Ref. Ref.
Có, trong vòng 6 tháng qua 1 (100%) 0 (0.00%) . [.;.] .
Bị ai đó la mắng, quát:
Chưa bao giờ 121 (82.3%) 26 (17.7%) Ref. Ref.
Có, trong vòng 6 tháng qua 2 (100%) 0 (0.00%) . [.;.] .
Có, từ 6 tháng trở lên 1 (100%) 0 (0.00%) . [.;.] .
Bị tống tiền: Chưa bao giờ 124 (82.7%) 26 (17.3%) Ref. Ref.
E ngại sử dụng các dịch vụ y tế vì lý do bị phân biệt, đối xử:
Chưa bao giờ e ngại 84 (84.0%) 16 (16.0%) Ref. Ref.
Có, trong vòng 12 tháng qua 4 (100%) 0 (0.00%) . [.;.] .
Có, từ 12 tháng trở lên 20 (80.0%) 5 (20.0%) . [.;.] .
Không trả lời 16 (76.2%) 5 (23.8%) . [.;.] .

Bảng 8. Mối liên quan giữa đặc điểm dự phòng HIV và thời gian gần nhất xét nghiệm HIV

OR4 =createTable(compareGroups(outcome ~ c302 + c304a + c301k,
                             data = data,
                             method=c(c306a=2), 
                             ref = 1,
                             riskratio = F,
                             byrow = T), 
               show.ratio = T,show.p.overall = F) 

export2md(OR4, width = "450px")
Summary descriptives table by groups of `Thời gian xét nghiệm’
<= 12 tháng >12 tháng OR p.ratio
N=124 N=26
Biết nơi tư vấn, xét nghiệm HIV:
113 (81.3%) 26 (18.7%) Ref. Ref.
Không 11 (100%) 0 (0.00%) . [.;.] .
Biết tình trạng nhiễm HIV:
Dương tính 2 (28.6%) 5 (71.4%) Ref. Ref.
Âm tính 101 (82.8%) 21 (17.2%) . [.;.] .
Không biết/Không trả lời 21 (100%) 0 (0.00%) . [.;.] .
Sử dụng PrEp:
Nhận PrEP hàng ngày 49 (90.7%) 5 (9.26%) Ref. Ref.
Nhận PrEP tình huống (ED PrEP) 34 (91.9%) 3 (8.11%) 0.88 [0.16;4.00] 0.873
Nhận cả hai 5 (83.3%) 1 (16.7%) 2.10 [0.07;18.2] 0.589
Chưa nhận bao giờ 36 (67.9%) 17 (32.1%) 4.48 [1.59;15.0] 0.004