九游手游返利

使用R语言对FAERS数据库进行单药ADE挖掘——①提取所需数据

发布日期:2025-02-04 02:49:25 点击次数:79

一、本篇目的:在已清洗数据的基础上,提取数据挖掘和论文写作过程中所需的数据子集。二、需要解决的问题:问题1:确定目标药物上市时间,根据上市时间,确定挖掘所需数据的时间范围,并提取数据子集;问题2:确定论文写作和数据挖掘过程中所需的数据,根据需求,提取数据子集。三、解决问题之前,先贴一下清洗后的数据信息:

清洗后的数据

包含的数据列

列的含义

 

 

 

 

demo

primaryid

报告唯一识别码  各表连接的主键

caseid

案例码

案例(caseid)更新,会生成不同报告(primaryid)

event_dt

AE开始的时间

fda_dt

FDA接收报告的时间

age_grp

年龄组

occr_country

发生AE的国家

reporter_country

上报AE的国家

age_year

年龄(单位为年)

sex

性别

wt_kg

体重(单位为kg)

occp_cod

上报者身份代码

 

 

 

drug

primaryid

同demo

drug_seq

事件里的药物识别码

role_cod

药物角色代码

caseid

同demo

drugname

药名

route

给药途径

prod_ai

活性成分

 

reac

primaryid

同demo

caseid

同demo

pt

AE

 

indi

primaryid

同demo

drug_seq

同drug

indi_pt

适应症

caseid

同demo

 

outc

primaryid

同demo

caseid

同demo

outc_cod

转归/结局代码

 

 

ther

primaryid

同demo

drug_seq

同drug

start_dt

一个药物开始或重新开始治疗的时间

caseid

同demo

四、问题的解决思路4.1 问题1的解决思路目标药物上市时间可以通过FDA官网查询。FAERS数据库挖掘,所用数据的时间范围一般有三种:1、从建库至今2、从目标药物上市季度至今3、从目标药物上市时间至今不同方法的选择,会对前期数据清洗的过程产生一定影响:第1种时间范围,需要下载所有数据,然后进行清洗;这种方法的对象主要是已经上市很久的药品。第2种时间范围,只需下载上市季度至今的数据进行清洗,数据量会小很多;或者在第1种方法得到数据的基础上,提取目标药物上市季度至今的数据。第3种方法,可以在第1或2种方法得到的数据基础上,提取上市时间至今的数据。相关论文对3种方法均有采用,这里不讨论哪种方法更加合适。本篇的例子就是先清洗了建库至今的所有数据,然后又提取了目标药物上市季度至今的的数据。4.2 问题2的解决思路1、数据挖掘方法一般采用频率法和贝叶斯法,不管是频率法中ROR/PRR,还是贝叶斯法中的BCPNN等,都涉及到药品不良反应四格表,如下图:

      drug

Target adverse reaction

Other adverse reactions

Target drug

a

b

Other drug

c

d

主要通过对drug和reac表格的操作,得到a/b/c/d和N(a+b+c+d)。2、论文涉及到的目标药物不良事件报告的基本情况,例如性别、年龄、报告年份、国家、上报人、转归结果、适应症、报告数量等,可以通过对reac/demo/outc/indi等表格的操作,提取获得。五、程序实现假定目标药物的上市时间在2015年第1季度;假定目标药物的名称为“A”。
library(tidyverse)  #载入tidyverse
demo <- read_csv("……/demo.csv")  #读取建库至今清洗后的demo#注意更换为自己的路径
demo_2015Q1<- demo %>%   filter(fda_dt >= 20150101)#通过fda_dt截取所需时间范围内的demo数据write_csv(demo_2015Q1, " demo_2015Q1.csv")#个人习惯把得到的数据输出,后续出现问题,避免重新跑程序
prid_2015Q1 <- demo_2015Q1$primaryid#提取目标药物上市后所有priamryid,用于drug表格中上市后所有数据提取
drug <- read_csv("……/drug.csv")#读取建库至今清洗后的drug
drug_2015Q1 <-  drug %>%   filter(primaryid %in% prid_2015Q1) %>%   filter(role_cod == "PS")#提取2015Q1至今的所有drug数据#role_cod设定为主要怀疑药物ps,如果有其他需求,可以通过更改role_cod的筛选条件进行重新提取write_csv(drug_2015Q1, " drug_2015Q1.csv")#个人习惯把得到的数据输出,后续出现问题,避免重新跑程序
prid_drug_2015Q1<- drug_2015Q1$primaryid#提取drug_2015Q1中的所有primaryid,用来提取reac表格中的数据
reac <- read_csv("……/reac.csv")#读取建库至今清洗后的reac
reac_2015Q1 <- reac  %>%   filter(primaryid %in% prid_drug_2015Q1)#提取上市季度至今的reacwrite_csv(reac_2015Q1, "reac_2015Q1.csv")#个人习惯把得到的数据输出,后续出现问题,避免重新跑程序
drug_A <-  drug_2015Q1 %>%   filter(prod_ai == "A")#在drug_2015Q1中提取目标药物A的子集#需要注意,我为了写程序方便,采用了相对更标准的prod_ai进行示例;prod_ai出现相对较晚,较早的案例就只能通过drugname进行检索提取;由于drugname并未进行标准化,所以需要通过程序,尽量把涉及目标药物A的子集提取到,包括但不限于不同的商品名、通用名等等。write_csv(drug_A, " drug_A.csv")#个人习惯把得到的数据输出,后续出现问题,避免重新跑程序
prid_A <- drug_A$primaryid#提取目标药物A的primaryid
reac_A <- reac_2015Q1 %>%   filter(primaryid %in% prid_A)#根据prid_A,对reac提取目标药物数据write_csv(reac_A, "reac_A.csv")#个人习惯把得到的数据输出,后续出现问题,避免重新跑程序
demo_A <-  demo_2015Q1 %>%    filter(primaryid %in% prid_A)#根据prid_A,对demo提取目标药物数据write_csv(demo_A, "demo_A.csv")#个人习惯把得到的数据输出,后续出现问题,避免重新跑程序
indi  <-  read_csv("indi.csv")#载入建库至今清洗后的indi
indi_A <- indi  %>%   filter(primaryid %in% prid_A)#根据prid_A,对indi提取目标药物数据write_csv(indi_A, "indi_A.csv")#个人习惯把得到的数据输出,后续出现问题,避免重新跑程序
outc  <-  read_csv("outc.csv")#载入建库至今清洗后的outc
outc_A <-  outc %>%   filter(primaryid %in% prid_A)#根据prid_A,对outc提取目标药物数据write_csv(outc_A, "outc_A.csv")#个人习惯把得到的数据输出,后续出现问题,避免重新跑程序
ther  <-  read_csv("ther.csv")#载入建库至今清洗后的ther
ther_A <-  ther %>%   filter(primaryid %in% prid_A)#根据prid_A,对ther提取目标药物数据write_csv(ther_A, "ther_A.csv")#个人习惯把得到的数据输出,后续出现问题,避免重新跑程序

六、所得数据小结

提取到的表格

表格用途

drug_2015Q1

统计abcdN

reac_2015Q1

统计abcdN

reac_A

统计目标药物不良事件报告数

demo_A

统计目标药物不良事件报告的基本特征

indi_A

统计目标药物的适应症

outc_A

统计目标药物不良事件的患者结局

ther_A

统计目标药物的治疗使用情况

后续会根据以上表格,进行论文所需数据的统计提取。 本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。