R海拾遗-流程图prismadiagramR

时间:2022-07-25
本文章向大家介绍R海拾遗-流程图prismadiagramR,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

R绘制流程图

sunqi

2020/7/23

R 概述

这个包是为了快速建立meta分析的流程图,目标是符合prism发表的要求

需要的参数:

  1. Pub.ID: 文章id
  2. Source: 文章来源,如pubmed等标记
  3. Filter: 排除文章的原因,或者不排除

go

安装

# install.packages("prismadiagramR")
library(prismadiagramR)
library(dplyr)

进行一个简单的例子

rm(list=ls())
set.seed(25)
N <- 100
studyStatus <- data.frame(Pub.ID = seq(1:N),
                          # sample为随机取样
                          Source = sample(letters[1:3], N, replace = TRUE),
                          Filter = sample(letters[1:5], N, replace = TRUE))
# 建立的数据集,包含100个例子
head(studyStatus)
##   Pub.ID Source Filter
## 1      1      c      a
## 2      2      a      d
## 3      3      a      e
## 4      4      a      d
## 5      5      a      e
## 6      6      b      a
#把e替换为NA,也就是不排除的文章
studyStatus$Filter[studyStatus$Filter=="e"] <- NA
#绘制流程图
getPrisma(studyStatus) %>% DiagrammeR::grViz(.)

Source: a(N=38)Studies Remaining:(N=76)Source: b(N=32)Source: c(N=30)Filter: a(N=24)Filter: b(N=14)Filter: c(N=27)Filter: d(N=17)Studies Remaining:(N=62)Studies Remaining:(N=35)Studies Remaining:(N=18)Studies in Analysis(N=18)

# 对排除的顺序和文章来源进行调整
studyStatus$Source <- ordered(studyStatus$Source , levels = c("c", "b", "a"))
studyStatus$Filter <- ordered(studyStatus$Filter , levels = c("d", "c", "b", "a"))

getPrisma(studyStatus) %>% DiagrammeR::grViz(.)

Source: c(N=30)Studies Remaining:(N=83)Source: b(N=32)Source: a(N=38)Filter: d(N=17)Filter: c(N=27)Filter: b(N=14)Filter: a(N=24)Studies Remaining:(N=56)Studies Remaining:(N=42)Studies Remaining:(N=18)Studies in Analysis(N=18)

自定义输出

查看需要的格式

prismaFormat <- getPrismaFormat(studyStatus)
# install.packages("flextable")
# 可以看到prisma需要的参数有3个,一个是node的水平,一个是node的类型,一个是文本

flextable::flextable(prismaFormat)

prismaLvl

nodeType

prismaTxt

1

Source

Source: c(N=30)

1

Source

Source: b(N=32)

1

Source

Source: a(N=38)

2

Filter

Filter: d(N=17)

3

Filter

Filter: c(N=27)

4

Filter

Filter: b(N=14)

5

Filter

Filter: a(N=24)

2

Node

Studies Remaining:(N=83)

3

Node

Studies Remaining:(N=56)

4

Node

Studies Remaining:(N=42)

5

Node

Studies Remaining:(N=18)

6

End

Studies in Analysis(N=18)

# 更改文本
prismaFormat$prismaTxt[1] <- "huoxingwa"
getPrisma(studyStatus = NULL, prismaFormat = prismaFormat) %>% DiagrammeR::grViz(.)

huoxingwaStudies Remaining:(N=83)Source: b(N=32)Source: a(N=38)Filter: d(N=17)Filter: c(N=27)Filter: b(N=14)Filter: a(N=24)Studies Remaining:(N=56)Studies Remaining:(N=42)Studies Remaining:(N=18)Studies in Analysis(N=18)

# 更改字体大小
prismaFormat$fontSize <- 15
prismaFormat$fontSize[1] <- 10
getPrisma(studyStatus = NULL, prismaFormat = prismaFormat) %>% DiagrammeR::grViz(.)

huoxingwaStudies Remaining:(N=83)Source: b(N=32)Source: a(N=38)Filter: d(N=17)Filter: c(N=27)Filter: b(N=14)Filter: a(N=24)Studies Remaining:(N=56)Studies Remaining:(N=42)Studies Remaining:(N=18)Studies in Analysis(N=18)

## prismaFormat是比较重要的一个输入结构,因此,也可以直接从prisma这里输入数据,不用第一种方式也是可以的

prismaFormat <-
  data.frame(
    prismaLvl = c(1,1,1,2,2,3),
    nodeType =  c("Source", "Source","Source", "Node", "Filter", "End"),
    prismaTxt = letters[1:6]
  )

getPrisma(studyStatus = NULL, prismaFormat = prismaFormat) %>% DiagrammeR::grViz(.)

adbcef

结束语

从效率角度上来说,可以避免绘制流程图的框框,但是从代码角度来讲,还是费劲的,不过,可重复性强,改改就可以出新的流程图,嫌输入麻烦,可以在excel中输入好节点,直接绘制,还是不错的。电脑也坏了,不禁造啊,头疼了两天,我又回来了。 love&peace