SEER数据库数据清洗实操指南

官方
阅读 148 0 收藏 0 2025-07-09 10:00:00

SEER数据库介绍

SEER数据库(NATIONAL CANCER INSTITUTE The Surveillance, Epidemiology, and End Results Program),即美国国家癌症研究所用来监测、统计流行病学和最终结果的癌症数据库,官方网址:https://seer.cancer.gov/

SEER数据库包含了来自各个州的注册癌症患者的信息,其中包括患者的人口学特征(如年龄、性别、种族)、癌症类型、诊断时间、治疗方法和生存状况等。这些数据对于研究癌症的流行病学、病因学、诊断和治疗方面的问题非常有价值。

数据获取与准备

前往SEER官网(https://seer.cancer.gov)申请账号并签署数据使用协议。下载并安装SEER*Stat软件,用于数据提取。

SEER*Stat软件登录页面后有Data、Selection、Table、Output四个选项。Data界面中可以选择任意你想要查阅的数据集。数据集的名字上会介绍参与此个数据集的机构数量及起始时间。大家可根据自己的需要随意选择。选好数据集后点击Selection,进入下一个界面。Selection其实就是选择病例筛选的条件。筛选条件设定好之后,点击Table,Table是选择你需要用到的临床信息。点击工具栏的闪电按钮(Execute)就可以下载病例数据。字典功能可以提供部分变量的含义,会提供相关的链接(第四栏Output,指的是输出文件的文件名,可以随便命名)。

最后会出现表格形式,可以将表格的数据直接复制粘贴到excel里,保存格式可以保存为csv格式,excel皆可。下文以csv为例进行数据清洗展示:

数据导入

setwd("E:/SEER/")#设置工作路径
data <-read.csv('数据.csv')#数据导入

数据清洗

▶ 年龄处理成2位小数(导出来的文档,年龄是显示的XXyears)

data$Age <-as.numeric(substr(as.character(data$Age.recode.with.single.ages.and.90.), 12))
#年龄保留两位小数
▶ 删掉缺失的,或者unknown的行
data <-data[data$PRCDA.2020!="Unknown PRCDA",]#删掉Unknown PRCDA的行
data <-data[!is.na(data$PRCDA.2020),]#删掉缺失的行
▶ 将详细分期(如 IIA、IIIB、IIIC 等)合并为大类分期(I、II、III、IV)
data$Stage <-ifelse(grepl("IV", data$Derived.AJCC.Stage.Group..7th.ed..2010.2015.), "IV",
                      ifelse(grepl("III", data$Derived.AJCC.Stage.Group..7th.ed..2010.2015.), "III",
                           ifelse(grepl("II", data$Derived.AJCC.Stage.Group..7th.ed..2010.2015.), "II",
                                ifelse(grepl("I", data$Derived.AJCC.Stage.Group..7th.ed..2010.2015.), "I""Unknown"))))
▶ 死亡信息处理(如果结局想要看特异性死亡,则首先需要去除死亡信息不明的个体)
ata<-data[data$SEER.cause.specific.death.classification !='Dead (missing/unknown COD)', ]#SEER 中部分患者标记为 "Dead (missing/unknown COD)",这类个体无法确定死因,不建议纳入 CSS 分析。
data$OS <-ifelse(data$SEER.cause.specific.death.classification =='Dead (attributable to this cancer dx)'10)#总生存(OS)
data$CSS <-data$OS
data$CSS <-ifelse(data$CSS ==11,
                   ifelse(data$`COD to site recode` =='Alive'02))#癌症特异性生存(CSS):死于本癌症 = 1;存活 = 0;死于其他原因 = 2(可用于竞争风险分析)
▶ 生存时间的处理
data$time <-as.numeric(data$Survival.months)#转化为数值型

评论列表

发表评论