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

如何将JSON转为Data Frame?如何用JSON映射Data Frame的分类ID与分类

问题1:如何将JSON文件转换为Data Frame?

在R中,推荐用jsonlite包处理JSON转Data Frame,操作简洁且兼容性强:

  1. 安装并加载包:
install.packages("jsonlite")
library(jsonlite)
  1. 根据JSON结构选择转换方式:
    • 若JSON是数组结构(直接包含多个对象):
    df <- fromJSON("your_file.json")
    
    • 若JSON是嵌套结构(比如外层有items字段,像你提供的分类JSON):
    json_data <- fromJSON("CA_category_id.json")
    df <- as.data.frame(json_data$items)
    

如果用rjson包,读取后是列表结构,需手动转换:

install.packages("rjson")
library(rjson)
json_list <- fromJSON(file = "CA_category_id.json")
df <- do.call(rbind, lapply(json_list$items, as.data.frame))
问题2:分类ID映射为分类名称的正确实现

先拆解你提供的代码问题:

  • 重复读取了两次JSON文件(data <- ...和d <- ...),完全没必要,浪费资源
  • 连续两次给vedio5$category赋值,属于无效重复操作
  • 最后那个for (category in vedio5)循环完全错误:遍历Data Frame时会逐个拿到每一列,此时给vedio5$category重复赋值,既达不到目的还会占用额外计算资源

以下是两种高效的实现方式:

方法一:用命名列表做轻量化映射

library(rjson)
# 读取分类JSON并构建ID到名称的命名列表
category_data <- fromJSON(file = "CA_category_id.json")
category_map <- sapply(category_data$items, function(x) {
  x$snippet$title
}, USE.NAMES = TRUE)
# 确保映射的键(分类ID)和Data Frame中的ID类型一致(统一转字符型)
names(category_map) <- as.character(names(category_map))
vedio5$category_id <- as.character(vedio5$category_id)

# 完成ID到名称的映射
vedio5$category <- category_map[vedio5$category_id]

方法二:用Data Frame做映射(更直观,适合后续分析)

library(jsonlite)
# 读取分类JSON并提取ID和名称列
category_df <- fromJSON("CA_category_id.json")$items
category_df <- category_df[, c("id", "snippet.title")]
colnames(category_df) <- c("category_id", "category_name")

# 通过合并Data Frame完成映射,all.x=TRUE确保保留原数据所有行
vedio5 <- merge(vedio5, category_df, by = "category_id", all.x = TRUE)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 17:55:12