这个包是为了快速建立meta分析的流程图,目标是符合prism发表的要求
需要的参数:
# 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