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

如何在R中展开嵌套于大括号的JSON数据并保留test_part关联信息

解决嵌套JSON响应的展开问题

我来帮你搞定这个嵌套JSON的展开需求——你的核心问题是responses列里存的是JSON格式的字符串,而非已经解析好的JSON对象,所以直接用flatten=TRUE没法自动展开它。我们需要把这些字符串逐个解析成结构化数据,再和对应的test_part绑定起来,确保每个问题响应都能关联到所属的测试部分。

下面是完整的解决方案,用tidyverse和jsonlite配合实现:

完整代码示例

library(jsonlite)
library(tidyverse)

# 读取原始数据
data_full <- read_lines('mytxtfile.txt')
data_questions <- fromJSON(data_full[1], flatten = TRUE)

# 提取目标列,同时过滤掉无响应的行(第一行是启动任务,不需要)
data_filtered <- data_questions %>%
  select(test_part, responses) %>%
  filter(!is.na(responses))

# 逐个解析JSON字符串,转成数据框并与test_part关联
data_final <- data_filtered %>%
  # 把每个responses字符串解析成数据框格式
  mutate(responses_parsed = map(responses, ~fromJSON(.x) %>% as.data.frame())) %>%
  # 展开嵌套的数据框,自动补全缺失的问题为NA
  unnest(responses_parsed)

# 查看最终结果
print(data_final)

代码细节解释

  1. 过滤无效行:第一行的responses是NA,对应启动任务的步骤,我们用filter(!is.na(responses))排除它,只保留实际的问卷响应行。
  2. 解析JSON字符串:用purrr::map遍历每一行的responses字符串,通过fromJSON把它解析成结构化的列表,再转成小数据框。
  3. 展开嵌套数据:unnest会把每个解析后的小数据框展开,和原有的test_part列一一对应。对于不同行中缺失的问题(比如第二行没有Q9、Q10等),会自动填充NA,完美适配不同长度的问卷响应。

最终效果

你会得到一个宽格式的数据框:每一行对应一个test_part,列包含test_part字段以及所有Q0、Q1、Q2...的响应值,缺失的问题会显示NA,完全实现了问题响应与对应test_part的关联需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 03:02:43