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
相关产品推荐
相关产品推荐

