基于 R 语言构建人群肿瘤登记数据分析工具

一套简化肿瘤登记数据分析流程的工具集

2025年3月26日

肿瘤登记

R语言

canregtools

该文章介绍了一款专为人群肿瘤登记开发的 R 语言工具包(canregtools),用于内部一致性逻辑审核、统计分析、数据可视化和报告撰写。文章详细阐述了 R 包的开发背景、设计思路、功能验证、应用场景及未来规划,旨在提升肿瘤登记工作的效率,帮助工作者解决常见难题。我们希望该工具集能为肿瘤登记工作提供有力支持,并期待领域内专家的宝贵意见,以进一步优化和完善其功能。

1 开发背景

人群肿瘤登记(Population-Based Cancer Registration, PBCR)是国家癌症防控计划的重要组成部分,旨在提供癌症的发病率、死亡率和生存率等核心数据,为制定和评估国家癌症防控策略提供科学依据1。自20世纪60年代中国建立第一个肿瘤登记处以来,肿瘤登记工作取得了显著进展,目前已建立覆盖全国所有县区的肿瘤监测体系。随着工作的不断推进,人群肿瘤登记处的数量迅速增加,同时也积累了大量的数据。因此,如何从多个层面深入分析并充分利用肿瘤登记数据,以支持科学决策并优化癌症防控措施,具有重要的现实意义1。高质量的数据是促进其充分利用的前提,然而,随着PBCR数量的快速增加,数据质量却参差不齐,如何持续提升数据质量已经成为各级肿瘤登记处亟待解决的重大问题。个案记录和登记处层面的质量评估与控制是确保肿瘤登记数据质量的关键措施,并已成为肿瘤登记工作实践中的核心组成部分,仍是中国现有肿瘤登记工作中的重点和难点之一。除此之外,PBCR数据的可视化、输出各种类型的统计报告包括质量控制报告、工作报告和肿瘤登记年报也是一项十分重要并且非常耗费时间的工作内容,如何快速且高质量地输出各种类型的统计报告具有重要意义。

目前,可用于肿瘤登记的数据处理工具有多种,主要包括国际癌症研究中心/国际肿瘤登记处(IARC/IACR)发布的 IARCcrgTools2(内部一致性逻辑审核和编码转换软件)、CanReg53(数据录入与管理软件),以及欧洲肿瘤登记协作网络(ENCR)发布的 JRC QCS(质量核查软件)4。此外,一些肿瘤登记处还开发了适用于自身需求的软件。这些软件各自针对特定目的而设计,例如 IARCcrgTools5主要用于数据的一致性审核和编码转换,CanReg5 负责数据录入、管理,并具备部分统计分析和可视化功能,而 JRC QCS 则按照 ENCR 标准执行质量审核。

然而,使用这些软件处理和分析中国肿瘤登记数据时面临一些不足和限制。首先,它们的操作方式主要依赖鼠标手动执行,对于自动化处理需求支持有限,因此难以实现对多个肿瘤登记处数据的批量自动化操作。第二,这些软件的功能实现基于国际通用标准或欧洲标准执行,而中国肿瘤登记除了基于国际通用标准收集的变量(ICDO3、ICD10、诊断依据等)之外,部分变量则按照中国肿瘤登记数据集标准6进行收集(如职业、婚姻、学历、身份识别信息等),这些软件无法对这些变量进行逻辑审核。第三,中国有数千个肿瘤登记处,这些软件无法实现对肿瘤登记数据分级整合和管理功能。

基于这一背景,我们开发了一个名为 canregtools 的 R 语言包,旨在 R 语言环境中实现 PBCR 的常规统计分析,提升数据分析效率和质量,同时简化数据一致性审核、可视化和统计报告等功能。

2 为什么选择R语言

中国已有多位专家开发了用于肿瘤登记数据管理与统计分析的软件。早在 2012 年,天津医科大学附属肿瘤医院的王庆生教授开发了一款肿瘤登记数据管理与分析系统,集成了数据录入、管理及统计分析功能7,并在当年哈尔滨举办的全国肿瘤登记会议上进行了相关培训。我也有幸参与了此次会议。此外,国家癌症中心的郑荣寿教授编写了一套功能强大的 SAS 宏程序,该程序可调用 IARCcrgTools 软件,实现内部一致性逻辑审核、统计分析及统计报告的自动生成。而上海市疾控中心的吴春晓教授则基于微软 Access 软件开发了肿瘤登记数据统计分析系统,该系统能够生成多种预设统计表,进一步提升数据分析的便捷性和效率。

然而,这些高效的软件在推广和普及方面受到一定限制,主要原因在于权限要求和操作系统兼容性。例如,SAS 和 Access 软件均无法在 Mac 或 Linux 操作系统上运行,且它们的使用需要购买许可证,否则无法正常使用。这些因素限制了其在更广泛用户群体中的应用。

相比之下,R 语言是一款免费且开源的统计分析软件,不受权限限制,用户可以自由使用和共享。此外,R 语言的开发社区极为活跃,许多 R 语言包可以托管在 CRANGitHub 等平台,用户能够方便地安装和使用。

我过去一直使用 SAS 作为主要的统计分析工具,特别是在肿瘤登记数据的分析工作中。然而,2021 年,我更换了一台 Mac 作为主力工作电脑,熟悉的 SAS 软件无法运行。其实,我也不想再到处寻找 SAS 的许可证,因此,我开始转向 R 语言,并将其作为主要的统计分析工具。这也是选择R语言作为开发软件的主要原因。

3 开发思路

最初编写 canregtools R 包的构想是实现一整套针对肿瘤登记数据的处理和分析功能,包括数据读取、变量格式标准化、内部一致性逻辑审核、质量控制指标计算、常规统计分析、常用统计图生成以及按照模板输出报告等。

我们起初计划将所有功能整合到一个 canregtools 包中。然而,在实现了大部分常规统计分析和内部一致性逻辑核查功能后,我们发现该包已经包含了过多的函数和字典,这不仅增加了代码的复杂性,还不利于后续的升级和维护。因此,我们决定将其拆分为多个专门化的 R 包,以实现不同的功能。

  • canregtools 用于读取肿瘤登记数据、常规统计分析、按照肿瘤登记处属性进行数据的整合和转换、按照模板输出报告(图 1);
  • crcheck 用于变量的内部一致性逻辑审核,帮助理解肿瘤登记逻辑审核规则(图 2);
  • ggcanreg 专注于肿瘤登记数据的可视化,绘制金字塔图、条形图、折线图、统计地图等常见类型的统计图(图 3);
  • manuscript 用于编写及生成各种类型的统计报告,如质量控制报告、数据分析报告、肿瘤登记年报等编写和管理维护(图 4)。
图 1: 统计分析
图 2: 逻辑审核
图 3: 数据可视化
图 4: 报告撰写

通过这些 R 包的组合,可以完整覆盖从个案级别的数据质量审核到最终统计报告输出的整个流程。这种模块化的设计思路借鉴了 tidyverse 系列包的管理方式,使得各个功能模块既能独立运行,又能灵活组合,以适应不同的分析需求。

4 S3类和泛函数

R语言提供了三种主要的面向对象编程(OOP)系统:S3、S4和R6。在肿瘤登记数据分析场景中,我们选择基于S3类的泛型函数实现面向对象编程。相较于更复杂的S4和R6系统,S3以其简洁的语法和灵活的扩展性完全满足项目需求。具体实现中,我们通过为原始数据集、中间计算结果等对象定义不同的S3类,并针对这些类编写泛型函数(generic function),最终实现多态编程机制——即同名函数在不同类对象上能执行差异化操作。

在数据导入环节,我们设计了层级化的对象系统:通过read_canreg()函数,肿瘤登记数据可被加载为单登记处对象(canreg类,图 5)或多登记处集合对象(canregs类)。这种类层级划分使后续分析具备多态扩展能力——基于这两个类实现的泛型函数count_canreg()会根据输入对象类型自动适配统计逻辑:当输入为canreg类时执行单数据集频数统计,输入canregs类时则进行跨数据集的合并统计。

5 设计数据类型

在处理肿瘤登记数据之前,首先需要将其导入 R 语言环境。对于工具开发而言,确定一个统一的数据格式是关键,因为数据读取函数应基于这种格式进行编写。我们常规分析的肿瘤登记数据主要包括三部分:肿瘤发病数据、肿瘤死亡数据和对应的人口数据,这也是国家癌症中心要求上报的数据格式。原始数据通常以 Excel 文件的形式存储,其中包含三个表单:FB(发病数据)、SW(死亡数据)和 POP(人口数据)。其中,FBSW 表单包含的主要变量包括:登记编号、性别、年龄、出生日期、发病日期、解剖学部位、形态学、行为、分级、诊断依据、ICD-10 代码以及死亡日期等,其变量定义符合中国肿瘤登记数据集标准。POP 表单则包含与 FB 和 SW 表单相同年份的、按性别和年龄组划分的人口数据。

我们引入了两个 S3 类数据类型(图 5, 图 6),以支持高效的肿瘤登记数据处理和分析。 “canreg”(图 5) 类用于存储读入的原始数据,而 “fbswicd”(图 6) 类基于 “canreg” 数据进行计数统计,保存分年份、性别、癌种及年龄别的发病数、死亡数等统计信息。通过 count_canreg 函数,用户可以轻松将 “canreg” 类数据转换为 “fbswicd” 类数据。针对数据量较大或登记机构数量较多的情况,直接对 “canreg” 类数据进行重组和合并可能会占用大量内存并影响运行效率,而通过将其转换为 “fbswicd” 类数据后进行操作,可显著优化内存使用并提高计算效率。

图 5: S3类:Canreg(读入原始数据)
图 6: S3类:FBSWICD (频数数据)

6 功能验证

在开发 canregtools 包的过程中,我们严格遵循相关的最佳实践和开发规范,以确保其质量和可信度。首先,我们使用 devtools 包的 check() 函数对 R 包的结构、依赖性及基本文档进行全面检查,确保其符合 R 包的基本要求。然后,借助 testthat 包对核心函数进行功能性测试,以验证其正确性。接着,利用 covr 包评估测试代码的覆盖率,以提高包的稳定性。同时,我们采用 roxygen2 包自动生成帮助文档,确保文档的完整性和准确性,并通过 devtools 包的 document() 函数重新生成文档,以确保示例代码的正确性。此外,我们还配置了 GitHub Actions 实现自动化测试,使代码每次提交后都能自动进行测试,并生成 R 包的网站。通过上述措施,我们对 canregtools 进行了全面验证,以提升其质量和可靠性。

为了进一步提高该工具集的可信度,我们计划将各个 R 包的开发过程和功能通过期刊论文的形式发表,以接受同行评审,并获得相关专家的反馈和建议,从而进一步优化 R 包的设计和功能。目前,canregtools 包已被 《中华肿瘤杂志》接收发表,其他 R 包的论文也在陆续投稿和发表过程中。

7 部署安装与使用

目前,上述的四个 R 语言包均仍处于开发和优化阶段。我们已将 canregtoolscrcheck 包托管在 GitHub 平台上,供用户试用并反馈意见,而 ggcanregmanuscript 包仍有部分功能尚未完成,我们正积极推进开发工作,争取尽快发布。在 GitHub 上托管这些 R 包只是第一步,待功能稳定后,我们计划陆续将其提交至 CRAN,以便用户能够更加便捷地安装和使用。

如何安装?

# 需要提前安装devtools包
install.packages("devtools")
library(devtools)

# 安装并加载canregtools包
install_github("gigu003/canregtools")
library(canregtools)

# 安装并加载crcheck包
install_github("gigu003/crcheck")
library(crcheck)

8 后续规划

虽然我们已经尽可能地将肿瘤登记相关功能封装为函数,供大家使用,但对于不熟悉 R 语言的用户而言,仍然存在一定的使用门槛。因此,我们计划进一步利用 R Shiny 开发一个可视化界面,使这些常用功能能够通过图形界面进行操作。此外,为了用户能够方便的理解和学习使用R包,我们还需要为各个R包编写网站和详细的使用文档,尽管这将是一个耗时的过程,但却至关重要。另一项重要的工作是将这些 R 包与 R 语言本身以及 Shiny 界面整合,并打包成可独立安装的应用程序(App),这样用户无需单独安装 R 语言和 R 包,从而降低使用难度,使其对非 R 语言用户更加友好。

开发计划
  • 基于 R Shiny 开发软件界面
  • 封装成可独立安装的应用程序
  • 编写R包网站和使用文档

9 小结

肿瘤登记是数据采集流程和质量控制最为复杂的监测工作之一。由于肿瘤诊断的复杂性,基层工作人员在实际工作中面临诸多挑战,例如:如何准确编码?如何有效进行数据审核,确保其有效性和内部一致性?如何判定多原发癌?

为了帮助肿瘤登记工作者应对这些关键问题,我们开发了一套 R 语言工具集,以提升数据处理的准确性和效率。尽管这一过程耗时且充满挑战,但我们认为这项工作极具价值,值得投入时间和精力。同时,我们也希望更多同行能够加入,共同完善和优化这一工具集,为肿瘤登记工作提供更强有力的技术支持。

1.
Wei W, Zeng H, Zheng R, Zhang S, An L, Chen R, 等. Cancer Registration in China and Its Role in Cancer Prevention and Control. Lancet Oncol. 2020年;21:e342–9.
2.
Ferlay J. IARCcrgTools Version 2.13 [网际网络]. Lyon (FR): Section of Cancer Surveillance, International Agency for Research on Cancer; 2018 [见引于 2024年12月21日]. 载于: http://www.iacr.com.fr/files/IARCcrgToolsSetup213.zip
3.
Morten JE. CanReg5 [网际网络]. Lyon (FR): International Agency for Research on Cancer; 2023 [见引于 2024年12月21日]. 载于: http://www.iacr.com.fr/CanReg5/CanReg5-Setup.zip
4.
Giusti F, Martos C, Adriani S, Flego M, Carvalho RN, Bettio M, 等. The Joint Research Centre-European Network of Cancer Registries Quality Check Software (JRC-ENCR QCS). Front Oncol [网际网络]. 2023年;13:1250195. 载于: https://www.ncbi.nlm.nih.gov/pubmed/37965471
5.
Ferlay J, Burkhard C, Whelan S, Parkin DM. Check And Conversions Programs for Cancer Registeies (IARC/IACR Tools for Cancer Registries). IARC Technical Report No 42. 2005年;
6.
中国卫生信息与健康医疗大数据学会. 中国肿瘤登记数据集标准.
7.
王庆生, 陈万青, 张思维. 中国肿瘤登记数据管理与分析系统软件开发与实践. 中国肿瘤 [网际网络]. 2012年 [见引于 2025年3月28日];21. 载于: https://d.wanfangdata.com.cn/periodical/zgzl201202002
陈琼博士

陈 琼

博士 副主任医师

他从事肿瘤登记与人群流行病学研究,编写肿瘤登记年报,并开发和维护个人网站。他撰写博文,分享数据分析方法、可视化技巧和自动化报告解决方案,同时学习 R 语言,开发 R 包,不断探索高效的数据处理与展示方式。 🚀