如何将几个 JSON 文件读取到 R 中的数据框?

数据挖掘 r 数据集 数据清理 json
2022-03-01 17:43:39

我有一个包含 30,000 多个 JSON 文件的文件夹。下面发布了一个包含内容的示例文件。

{
"name": null, "release_date_local": null, "title": "3 (2011)", 
"opening_weekend_take": 1234, "year": 2011,
"release_date_wide": "2011-09-16", "gross": 59954
}

但是,我需要以下结构中的 df 中的数据:

name relase_date_local title    opening_weekend_take year release_date gross
NA   NA                3 (2011) 1234                 2011 2011-09-16   5994

这是我将所有文件作为列表获取的代码片段:

path = "./Week1/jsonfiles"
temp = list.files(path, pattern = "*.json")
filename = paste(path, temp, sep = "/")
movies = c()
for (i in filename){
  movie = fromJSON(file = i)
  movies = c(movies, movie)
}

请告知,如何将所有 30,000 个文件作为 df 行读取?

1个回答

首先,您可以使用full.names参数来list.files()获取添加到每个文件的完整路径。

temp <- list.files(path, pattern="*.json", full.names=TRUE)

接下来,数据存在问题,因为它们包含的NULL值会引发快速而肮脏的解决方案。因此,我们必须获取每个列表元素并将 any 转换NULLNA.

最后,我们可以使用便捷purrr::map_df()的方式获取整个列表并将它们转换为data.frame

movies <- purrr::map_df(temp, function(x) { 
  purrr::map(jsonlite::fromJSON(x), function(y) ifelse(is.null(y), NA, y)) 
})