You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

gtsummary合并表格后提取ARD及生成JSON的技术问询

问题:从tbl_merge生成的跨表头表格中提取ARD并转换为JSON格式

我通过tbl_merge生成了带跨表头的生命体征汇总表格,表格显示符合预期,但在提取ARD(分析结果数据集)并转换为JSON格式时遇到困难。当前使用gather_ard()能得到ARD列表,但无法正确转换为结构化的JSON。

解决方案

问题根源

gather_ard()处理tbl_merge生成的表格时,会返回一个包含多个ARD对象的列表(对应合并前的每个子表格)。直接对整个列表使用as_nested_list()会导致结构混乱,因为该函数是为单个ARD对象设计的。

方法1:生成扁平结构的JSON(适合数据分析)

将所有ARD合并为单个数据框,再转换为JSON:

library(purrr)
library(jsonlite)

# 提取合并表格的ARD列表
ard_list <- gather_ard(vs.tbl)

# 将每个ARD对象转换为数据框并合并
ard_combined <- map_dfr(ard_list, as.data.frame)

# 转换为JSON(auto_unbox避免不必要的数组包裹)
ard_json <- toJSON(
  fromJSON(toJSON(ard_combined)), 
  pretty = TRUE,
  auto_unbox = TRUE
)

# 保存JSON文件
writeLines(ard_json, paste0(outputpath, "/ard_data_flat.json"))

方法2:保留原始分层结构的JSON(对应表格逻辑)

为每个子ARD添加标识,保留合并前的结构:

library(purrr)
library(jsonlite)

# 提取ARD列表
ard_list <- gather_ard(vs.tbl)

# 为每个ARD添加对应分析类型的名称
names(ard_list) <- c("Actual Value", "Change from Baseline")

# 将每个ARD转换为嵌套列表后生成JSON
ard_json <- toJSON(
  map(ard_list, as_nested_list), 
  pretty = TRUE,
  auto_unbox = TRUE
)

# 保存JSON文件
writeLines(ard_json, paste0(outputpath, "/ard_data_nested.json"))

关键说明

  • auto_unbox = TRUE:减少JSON中不必要的数组包裹,让结构更简洁易读。
  • 方法1生成的扁平结构适合后续数据查询或分析;方法2的分层结构更贴近原表格的逻辑,便于和表格展示对应。

内容的提问来源于stack exchange,提问作者Ranjan Karmakar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 16:13:10