传播链是现场行病学中展示传染病传播关系的重要可视化工具。传统关系型数据绘制工具比较繁琐、费时,而R语言中专门有{contacts}包可供调用。

该包可直接用install.packages()安装。

library(tidyverse)   #数据处理
library(outbreaks)   #获取mers_korea_2015数据集
library(epicontacts) #绘制plot

病例数据

建立或获取病例一览表数据

  linelist = outbreaks::mers_korea_2015$linelist
  linelist %>% 
    as_tibble() %>% 
    select(1:4) %>% 
    slice_sample(n = 10) %>% 
    knitr::kable()
id age age_class sex
SK_33 47 40-49 M
SK_42 54 50-59 F
SK_34 25 20-29 F
SK_108 32 30-39 F
SK_27 55 50-59 M
SK_21 59 50-59 F
SK_158 50 50-59 M
SK_52 54 50-59 F
SK_3 76 70-79 M
SK_12 49 40-49 F

其中病例识标变量是必须的,其他视需要添加,本例中id变量必须提供。

续发病例数据

  contacts = outbreaks::mers_korea_2015$contacts
  contacts %>% 
    as_tibble() %>% 
    slice_sample(n = 10) %>% 
    knitr::kable()
from to exposure diff_dt_onset
SK_15 SK_94 Hospital room 9
SK_1 SK_27 Hospital room 21
SK_16 SK_24 Hospital room 11
SK_14 SK_116 Emergency room 13
SK_6 SK_88 Hospital room 14
SK_14 SK_98 Emergency room 18
SK_123 SK_147 Hospital room 3
SK_15 SK_93 Hospital room 14
SK_1 SK_33 Visit hospital 10
SK_1 SK_13 Visit hospital 10

其中必须有两列变量,一列是from:表明传染源,另一列是to:表明续发病例,病例标识须与病例一览表中病例标识对应。

生成传播关系数据

merskor15 <- make_epicontacts(
  linelist = mers_korea_2015$linelist,
  contacts = mers_korea_2015$contacts, 
  directed = T)

绘图

plot(merskor15)

说明

  1. 鼠标点住任一节点,可以拖拉到任意位置
  2. 鼠标点住图任一位置,可以整体移动图形
  3. 鼠标点击任一节点,可浮窗显示该节点病例相关信息
  4. 滚动鼠标滚轮可放大/缩小全图