R 临床实战From SAS to R, In Depth
全书目录 / 第 8 章
08

社区与职业:pharmaverse 地图

学会 R 只是入场券;知道自己属于哪个社区、读谁的论文、按什么节奏迁移团队,才决定你能在制药 R 这条路上走多远。本章把地图摊开给你。

8.1 社区地图:值得长期跟踪的五个据点

制药 R 不是散落的博客圈,而是一个有会议、有工作组、有共享代码基础设施(pharmaverse)的成型生态。下面五个据点按"信息密度 × 与你的相关度"排序:

  • R/Pharma Summit — 每年一届的制药 R 专业会议,议题几乎全部围绕监管递交、CDISC 工作流与 GxP 验证。其官网公开的 Summit 圆桌笔记(尤其 AI 专场)是了解行业风向的最短路径。
  • China PharmaRUG(中国制药 R 用户组) — 中文语境下最对口的社区:线上分享、案例讨论与国内药企/CRO 的落地经验。对身在国内、时区与语言都更友好的你,这是第一个应该"加入"而不只是"浏览"的组织。
  • pharmaverse blog — admiral、tern、teal 等核心包的官方博客,发布新版本能力、设计决策与真实工作流示例。想知道"官方推荐怎么做",看这里比翻 Stack Overflow 可靠。
  • R Consortium Submissions Working Group — 用 R 向 FDA 递交分析的工作组,Pilot 1–5 的完整记录就是"R 能否过监管"这一问题的权威答案。递交相关的方法学争论,最终都会回到这里的文档。
  • useR! 会议(useR! 2024 起每年举办) — R 社区的全球旗舰年会,虽非制药专属,但临床统计专场(clinrep 等议题)与 keynote 能帮你跳出行业视角看 R 整体演进。适合每年挑回放看两三场。
跟踪方式建议:给 China PharmaRUG 订阅邮件/微信渠道,给 pharmaverse blog 与 Submissions WG 加 RSS 或每月固定半小时浏览,会议(R/Pharma、useR!)看议程挑回放。社区参与本身也是简历素材——见 8.6。

测验:想跟踪中国制药 R 用户组的活动与中文分享,应关注哪个社区?

选 B。China PharmaRUG 是面向中国制药行业的 R 用户组,活动与讨论以中文为主;useR! 是全球通用 R 年会,RStudio(Posit)社区论坛则偏工具答疑、非制药专属。

8.2 会议论文精读清单

下面 8 篇是"从 SAS 转身到 R"这条主线上最值得逐字精读的材料:前 5 篇来自 PharmaSUG 2026,后 3 篇是圆桌记录与企业案例。建议按表内顺序读——先立信心(转型全景),再学桥接(工作流),最后补验证与 AI 视角。

论文 / 材料出处一句话理由链接
Goodbye SAS, Hello R: Practical Workflows for CDISC(ET-279)PharmaSUG 2026从 SAS 老兵视角完整走一遍 R 的 CDISC 全流程,是本书第 2 章的"行业原版"。PDF
SAS-to-R 实用工作流(ET-179)PharmaSUG 2026把 SAS↔R 概念映射落到日常程序层面,与第 0 章 0.5 映射表互为印证。PDF
R 包验证框架(ET-140)PharmaSUG 2026GxP 语境下验证"包 + 测试 + 锁环境"的完整框架,第 5 章 5.8 节的底稿。PDF
SAS to R: A Practical Bridge(TT-156)PharmaSUG 2026入门友好的"桥"文:不劝你立刻告别 SAS,而是教你两边并行的过渡姿势。PDF
中间设计文档法(AI-305)PharmaSUG 2026用"中间设计文档"约束 AI 辅助编程的输出,让生成的 R 代码可审、可验证。PDF
AI 圆桌记录(2024)R/Pharma Summit 2024行业首批关于"AI 会怎样改变统计编程岗位"的公开讨论,观点原始、信息量大。笔记
AI 圆桌记录(2025)R/Pharma Summit 2025与 2024 场对照读,一年之间共识与分歧如何演变,本身就是趋势报告。笔记
J&J 混合递交案例:A Hybrid R/SAS Strategy for FDA SubmissionR Consortium真实获批案例复盘:"SAS 做 ADaM + R 做 TFL"的混合策略如何过 FDA,团队迁移的最强论据。文章

8.3 与本地精读资产的衔接

本书是"教程",你机器上另有两份"文献库",三者分工不同、互相引用:

  • ../PharmaSUG2026-Analysis/00-总览与导读.md — 对 PharmaSUG 2026 约 250 篇论文的分 track 导读:每篇一句话定位 + 深读编号。当你在本书某章想"再往下挖一层"时,去这里按 track 找论文。
  • ../PharmaR/Pharma开源社区近2年文章精读与AI影响分析.md — 对 pharmaverse 生态近 2 年主线文章的精读与 AI 影响分析:讲"生态怎么演化、AI 怎么介入",是理解行业叙事(而非单点技术)的那条线。

使用方法很简单:本书章负责"学会做",导读文档负责"知道去哪找",精读文档负责"看懂大势"。下表给出章与两份文档的映射(track 名与深读编号以导读文档实际目录为准):

本书章PharmaSUG2026 导读(track / 深读编号)PharmaR 精读文档(主线)
ch0–ch1 环境与语言00-总览与导读(先读方法论部分)§生态概览:pharmaverse 是什么
ch2 CDISC 数据03-DS track;深读 3/4(对应 ET-279、ET-179)admiral 家族演进主线
ch3 统计分析05-ST track;深读 6(生存与 MMRM 相关)tern / 统计报告主线
ch4 TLF 报告07-TT track;深读 8(对应 TT-156)rtables / quarto 报告主线
ch5 工程化与验证09-QC track;深读 5(对应 ET-140)验证与合规(valtools)主线
ch6 包开发02-AD track(工具化案例)pharmaverse 包开发协作模式
ch7 Shiny08-RB track(交互应用)teal / Shiny 生态主线
ch8 社区与职业(本章)01-AI track;深读 1/2(对应 AI-305 与两场 AI 圆桌)AI 影响分析章节(岗位与工作流重塑)

8.4 90 天计划:细化到周

首页 90 天路径给了四个阶段的粗颗粒版本;下表把它拆成 12 周,每周一个可检查的产出。原则:每周产出必须"拿得出手"(脚本、图表、包、文档),而不是"我看完了第 X 章"。

周目标产出对应章 / 案例
1环境搭建:R + renv + CRAN 镜像一个可 restore 的 renv 项目骨架;sessionInfo 留档ch0
2语言基础:向量、factor、NA、三大范式跑通 ch1 全部示例;自己的 SAS↔R 对照笔记(在 0.5 表上加行)ch1
3CDISC 上:SDTM 语义与 admiral 派生用 admiral 手工派生一份 ADSL 子集并通过 diffdf 自查ch2
4CDISC 下:全链路贯通独立完成 C1(SDTM→ADaM→Table 1)并写 QC 比对脚本ch2 / C1
5统计上:检验、回归与统计表格把一份熟悉的 SAP 主要分析用 R 重写并核对结果ch3
6统计下:生存分析复现 C2 全部 KM 图与 risk tablech3 / C2
7TLF:rtables + Quarto 报告产出一套报告级 TFL(RTF/PDF 双格式)ch4
8工程化:testthat + CI + valtools给 C1 的脚本补 testthat 测试并跑通一次本地 CIch5 / C1
9包开发:把自己的函数变成包C1 推导函数包化,带 roxygen 文档与 pkgdown 站点ch6 / C1
10Shiny 与三个数据案例跑通 C3–C5,并给每个案例加一个自定分析ch7 / C3–C5
11teal 探索器 + 开始精读部署 C6;按 8.2 清单精读第 1 篇(ET-279)并写摘要ch8 / C6
12复盘与职业输出再精读 2 篇(TT-156、J&J 案例)写摘要;完成 90 天复盘 + 个人/团队迁移计划一页纸ch8
落后了怎么办:优先砍"产出"的规模(例如 C2 只复现主图),不要砍周与周的顺序——第 4、8、9 周的全链路、测试、包化是后面一切的地基。

8.5 团队迁移策略:混合模式起步

个人转型靠自律,团队转型靠策略。目前最被验证的路径是 J&J 混合模式:ADaM 数据集继续用成熟 SAS 流程生产,TLF 报告端切换到 R(rtables + Quarto),以 R 包 + renv.lock 形式随 eCTD 递交。它的聪明之处在于:数据端风险最高的部分不动,先在"输出层"这个容易双编程核对的环节建立 R 的信任。

选择试点项目时,用三原则筛选,三条同时满足才动手:

  • 数据量小 — 选 I 期试验、单研究 Table 1 或列表(listings)这类"错了也能当天发现"的交付物。
  • 时间裕度 — 不在关键递交路径上;有并行 SAS 版本兜底,R 版做双编程比对。
  • 有 R 同伴 — 至少两人组队(一人写、一人审),避免"全团队只有一个人会 R"的单点风险。

试点跑通后,把第 5 章的验证清单升格为团队 SOP:valtools 验证计划模板、testthat 断言库、diffdf 双编程比对流程、renv.lock 递交附录规范——这些资产在后续每个项目里直接复用,迁移成本逐项目递减。

SAS 误区:把迁移理解成"把所有 SAS 宏逐个改写成 R 函数"。R 世界的迁移单元是"被验证的工作流"(包 + 测试 + 锁环境),而不是脚本对照翻译;逐宏改写会得到一堆没有测试、没有文档、无法审计的散脚本,比留在 SAS 更危险。
最重要的一条纪律:不要全栈一次性迁移。数据管理、统计编程、报告、递交四个环节同时换语言,等于把四个风险叠乘。J&J 用混合策略走了数年才逐步扩大 R 的范围——你的团队没有理由更快。

8.6 职业路径:角色演进与面试准备

SAS Programmer 转 R 不是换工具,而是换角色定位。典型的演进分三个阶段:

阶段角色你负责什么本书对应
1. 写代码R Statistical Programmer把既有 TFL/ADaM 需求用 R 实现并通过 QC;产出可靠脚本ch1–ch4 + C1/C2
2. 审代码 / 管流程QC Lead / Workflow Owner制定双编程与比对标准、维护测试与 CI 门禁、审核他人代码与验证证据ch5 + C1 的 QC 链路
3. 方案架构Programming Architect设计混合 SAS+R 递交策略、内部包与平台选型、团队能力路线图ch6–ch8 + 本章 8.5

面试(或内部转岗答辩)时,下面 12 个知识点几乎必被问到其中若干个。每条都建议准备一个"我亲手做过"的例子,而不只是概念复述:

  1. CDISC in R — 用 admiral 派生 SDTM/ADaM 的策略,与 SAS 宏库做法的异同(第 2 章)。
  2. admiral 生态 — admiral 与领域扩展包(admiralonco 等)的结构、pharmaverse 模板(admiral templates)用法。
  3. rtables — 分析型表格的 split/format 模型,与 ODS RTF 或 gtsummary 的取舍(第 4 章)。
  4. 验证 — GxP 语境下 R 的验证证据链:valtools、testthat、V 模型到"包 + 测试 + 锁环境"的平移(第 5 章)。
  5. renv — lock/snapshot/restore 工作流,renv.lock 在递交附录中的角色(第 0 章)。
  6. CI — GitHub Actions/GitLab CI 上跑 R CMD check 与 testthat 的经验,"全绿"作为放行门禁。
  7. 生存分析 — survival/survminer:KM 曲线、log-rank 检验、Cox 模型与 risk table 的生产级做法(第 3 章 / C2)。
  8. MMRM — 混合效应重复测量模型在 R 中的实现(mmrm/lme4 + emmeans)与 SAS PROC MIXED 结果的对齐。
  9. 双编程 — 独立双编程在 R 下的落地:diffdf/arsenal 比对、比对脚本自身的 QC。
  10. Shiny 验证 — 交互应用在 GxP 边界内外的定位,shinyvalidate 与 teal 模块化框架(第 7 章 / C6)。
  11. 包开发 — usethis/devtools/roxygen2/pkgdown 全流程,内部包仓库与版本策略(第 6 章)。
  12. 社区参与 — 给 pharmaverse 仓库提过 issue/PR、在 PharmaSUG/useR!/China PharmaRUG 做过分享或投稿——这条是区分"会 R"与"在 R 生态里"的关键。
给转型者的定心丸:招聘方看重的从来不是"R 写得多溜",而是"懂监管语境的编程能力 + R 工程化素养"的组合。你的 SAS 年限不是沉没成本,是稀缺资产——生态里会 rtables 的人不少,同时能把双编程纪律和递交要求讲清楚的人不多。

章末资源

本章练习

  1. (易)加入 pharmaverse Slack 工作区,并订阅 China PharmaRUG 的邮件/活动渠道;本周内在任一频道做一次自我介绍。
  2. (中)精读 ET-279,写 300 字中文摘要:作者的迁移路径、用到的核心包、你认为最值得团队借鉴的一个做法。
  3. (难)在团队内做一次 30 分钟 R 分享(题目自选,如"我用 admiral 重写了 Table 1"),留存 slides 与示例代码仓库链接——这就是 8.6 第 12 条面试素材的第一件。

全书到此结束。地图已经摊开:社区在哪、论文读哪几篇、12 周怎么走、团队怎么迁、职业往哪去。剩下的事情只有一件——从第 1 周的那个 renv 项目开始,把它做完。