首页 > 解决方案 > 根据不同的json文件获取单独的数据框

问题描述

我有三个 .json 文件,

bc1004.json
{"fl":1137379,"flnc":1134924,"flnc_polya":1134631}
bc1005.json
{"fl":1154374,"flnc":1151937,"flnc_polya":1151606}
bc1006.json
{"fl":765436,"flnc":760524,"flnc_polya":760304}

我想获得对应于 3 个文件的 3 个单独的 data.frames,文件名对应于每个 data.frame。目前,我可以得到一个包含数据的列表。

filenames <- list.files("my_path/", pattern="*.json", full.names=TRUE)
myJSON <- lapply(filenames, function(x) rjson::fromJSON(file=x))
>myJSON

 [[1]]
[[1]]$fl
[1] 1137379

[[1]]$flnc
[1] 1134924

[[1]]$flnc_polya
[1] 1134631


[[2]]
[[2]]$fl
[1] 1154374

[[2]]$flnc
[1] 1151937

[[2]]$flnc_polya
[1] 1151606


[[3]]
[[3]]$fl
[1] 765436

[[3]]$flnc
[1] 760524

[[3]]$flnc_polya
[1] 760304

标签: rjsondataframe

解决方案


尝试

myJSON_New <- lapply(myJSON, function(x) {cols <- names(x); x %>% 
  unique %>% 
  unlist %>% 
  as.data.frame %>% 
  tibble::rownames_to_column() %>% 
    mutate(rowname = rowname, 
     var1 = names(x))})

names(myJSON_New) <- filenames

输出

    > myJSON_New
$`./bc1004.json`
  rowname       .       var1
1       1 1137379         fl
2       2 1134924       flnc
3       3 1134631 flnc_polya

$`./bc1005.json`
  rowname       .       var1
1       1 1154374         fl
2       2 1151937       flnc
3       3 1151606 flnc_polya

$`./bc1006.json`
  rowname      .       var1
1       1 765436         fl
2       2 760524       flnc
3       3 760304 flnc_polya

推荐阅读