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

如何从字符串提取带标签数字?以R语言JSON格式价格向量为例

嘿,我来帮你搞定这个从JSON字符串向量里提取对应货币价格的问题!在R里处理这种格式的数据其实有挺多便捷的方法,下面给你详细拆解两种常用方案:

方法一:用jsonlite包快速解析(最直接)

jsonlite是R里处理JSON数据的标配工具,解析单个JSON字符串特别顺手。我们可以遍历向量里的每个元素,把它们逐个解析后合并成数据框:

首先如果还没装包,先安装:

install.packages("jsonlite")

然后加载包并处理数据:

library(jsonlite)

# 你的原始数据向量
X <- c( 
  "{\"eur\": 4900, \"gbp\": 4250, \"usd\": 6120}", 
  "{\"gbp\": 730, \"usd\": 1050}", 
  "{\"eur\": 1050, \"gbp\": 910, \"usd\": 1310}", 
  "{\"eur\": 400, \"gbp\": 350, \"usd\": 500}" 
)

# 解析每个JSON字符串并合并成数据框
price_df <- do.call(rbind, lapply(X, function(x) as.data.frame(fromJSON(x))))

运行后你会得到一个包含eur、gbp、usd三列的数据框,缺失的货币值(比如第二个元素里的eur)会自动填充为NA,完全符合数据框的规范结构。

方法二:结合tidyverse工具链(适合数据管道流)

如果你平时习惯用dplyr和purrr这类tidyverse工具,用管道流处理会更流畅:

先加载所需包:

install.packages("tidyverse")
library(tidyverse)
library(jsonlite)

然后用管道一步到位:

price_df <- tibble(json_str = X) %>%
  # 把每个JSON字符串解析成迷你tibble
  mutate(data = map(json_str, ~fromJSON(.) %>% as_tibble())) %>%
  # 把嵌套的tibble展开成列
  unnest(data)

这个方法的好处是代码可读性更强,后续如果要加筛选、转换等操作,可以直接在管道里继续添加步骤,非常灵活。

额外小技巧:提取特定货币

如果你不需要所有货币,只想提取某几个(比如只需要eur和usd),可以在解析后加上筛选步骤:

# 用基础R的方式
price_df <- do.call(rbind, lapply(X, function(x) {
  json_data <- fromJSON(x)
  # 只保留eur和usd键对应的数据
  as.data.frame(json_data[c("eur", "usd")])
}))

# 用tidyverse的方式
price_df <- tibble(json_str = X) %>%
  mutate(data = map(json_str, ~fromJSON(.) %>% as_tibble() %>% select(eur, usd))) %>%
  unnest(data)

这样就能精准得到你需要的货币价格数据啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:06:01