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

如何在R中展开数据框内的JSON字符串格式交易记录?

解决方法:将字符串格式的交易记录展开为标准DataFrame

你的核心问题是transactionHistory列是单引号格式的类JSON字符串,不符合标准JSON的双引号要求,无法直接解析。可以通过「格式转换→JSON解析→行展开」三步处理,用R的tidyverse工具链实现:

步骤1:加载所需包

library(dplyr)
library(tidyr)
library(jsonlite)

步骤2:完整处理代码

假设你的原始数据框名为df,执行以下代码:

df_processed <- df %>%
  # 替换单引号为双引号,适配JSON解析规则
  mutate(transactionHistory = stringr::str_replace_all(transactionHistory, "'", "\"")) %>%
  # 将每个字符串解析为交易列表
  mutate(transaction_details = purrr::map(transactionHistory, ~jsonlite::fromJSON(.x))) %>%
  # 把列表中的每一条交易拆分为单独行
  unnest(transaction_details) %>%
  # 移除原始的字符串列(可选)
  select(-transactionHistory) %>%
  # 可选:将金额转换为数值类型(去掉$符号)
  mutate(transactionAmount = as.numeric(stringr::str_remove(transactionAmount, "\\$")))

代码说明

  • 单引号替换:标准JSON要求键和值用双引号,所以先把所有'替换为",让字符串符合JSON格式。
  • JSON解析:用map+fromJSON把每个单元格的字符串转换成包含多个交易的列表。
  • 行展开:unnest会把列表中的每一条交易记录拆成单独的行,和对应的customerId一一对应。
  • 金额转换:可选步骤,把带$的字符串转成数值型,方便后续分析。

处理后你会得到一个标准结构的DataFrame,每一行对应一条交易记录,包含customerId、transactionId、date、status、transactionAmount等字段。

内容的提问来源于stack exchange,提问作者Jorge Hernández

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 16:50:09