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

R语言:将ClinicalTrials.gov API返回数据的列表列转为字符串

解决ClinicalTrials.gov API数据列类型转换问题

问题原因

从ClinicalTrials.gov API返回的字段中,部分字段(如Condition)可能对应多个值,因此被解析为列表类型。直接使用unnest会展开这些列表元素,导致行数变化(比如多值字段会拆分出多行,空列表字段会过滤掉对应行),这不符合保留每行对应一个研究的需求。

解决方案:将列表列转为字符串(保留单行结构)

通过拼接列表元素为单个字符串的方式,可把所有列表列转为字符型,同时保持每行对应一个研究的结构。以下是两种实现方式:

方式1:Base R实现

# 遍历所有列,将列表元素用逗号拼接为字符串
for (col in names(studylist)) {
  studylist[[col]] <- sapply(studylist[[col]], function(x) paste(x, collapse = ", "))
}

# 可选:将数值型字段转为数值类型(如EnrollmentCount)
studylist$EnrollmentCount <- as.double(studylist$EnrollmentCount)

方式2:dplyr + purrr 简洁实现

library(dplyr)
library(purrr)

studylist_clean <- studylist %>%
  # 对字符类字段:拼接列表元素为字符串
  mutate(across(c(NCTId, Condition, OfficialTitle, Phase, StartDate), 
                ~map_chr(., ~paste(.x, collapse = ", ")))) %>%
  # 对数值类字段:转为数值型(空值设为NA)
  mutate(EnrollmentCount = map_dbl(EnrollmentCount, 
                                   ~ifelse(length(.x) == 0, NA_real_, as.double(.x))))

效果说明

处理后所有列都会转为字符型(或指定的数值型),每行仍对应一个研究,行数保持为预期的10行。如果某个字段有多个值(比如一个研究对应多种病症),会用逗号分隔合并为单个字符串。

内容的提问来源于stack exchange,提问作者Ashok G

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 13:12:23